C#: eine "Optionale" Parameter, der standardmäßig verwendet der Wert eines erforderlichen parameter
Wie kann ich die implementieren eine "optionale" parameter an eine Funktion, so dass, wenn endMarker
ist nicht gegeben, werde ich den Wert aus einer erforderlichen parameter startMarker
? ich verwende derzeit eine nullable-Typ und überprüfen Sie, ob endMarker
ist null ich es auf startMarker
protected void wrapText(string startMarker, string? endMarker = null) {
if (endMarker == null)
endMarker = startMarker;
}
aber das problem ist jetzt, bekomme ich eine Fehlermeldung besagt, dass es nicht gewirkt string?
in string
(string)endMarker
wie kann ich warf endMarker
zu einem string
so kann ich es verwenden? oder gibt es eine bessere Art und Weise der Umsetzung dieser?
InformationsquelleAutor Jiew Meng | 2010-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktionieren wird:
In anderen Worten: entfernen Sie das Fragezeichen aus der
string?
.System.String
ist ein Referenz-Typ und kann bereitsnull
. DieNullable<T>
Struktur kann nur auf Werttypen.Es ist wichtig zu beachten, dass dies nur möglich in C# 4 und weiter.
möchte nur hinzufügen, den code kann man kürzen zu
endMarker = endMarker ?? startMarker
InformationsquelleAutor Steven
Müssen Sie, um eine überlastung der Methode zu haben, einen Anruf ohne die "optionale" parameter. Dann in dieser Methode rufen Sie einfach die normale Methode übergeben, in der gleiche parameter zweimal:
InformationsquelleAutor cjk
Können Sie nicht einfach etwas wie das hier tun:
endMarker
zustartMarker
was auch immer passiert.jetzt besser, oder sollte ich einfach aufhören, während ich bin hinter?
Du hast noch eine völlig sinnlose Zeile da...
Aber würde es funktionieren wie ein hässlicher hack? c# - noob hier, also Mach einfach
Man kann nicht ein
Nullable<string>
(oderstring?
das ist das gleiche) - ein string ist bereits nullable (es ist ein Referenz-Typ)InformationsquelleAutor MrBliz