C#: Avoir une “Option” Paramètre par défaut utilise la valeur d'un paramètre
Comment puis-je mettre en œuvre une "option" paramètre à une fonction telle que, lorsque endMarker
n'est pas donné, je vais utiliser la valeur d'un paramètre obligatoire startMarker
? j'utilise actuellement un type nullable et de vérifier si endMarker
est nul je l'ai mis à startMarker
protected void wrapText(string startMarker, string? endMarker = null) {
if (endMarker == null)
endMarker = startMarker;
}
mais le problème maintenant est que j'obtiens un message d'erreur disant qu'il ne peut pas lancer de string?
en string
(string)endMarker
comment puis-je cast endMarker
à un string
donc je peux l'utiliser? ou est-il une meilleure façon de mettre en œuvre cette?
OriginalL'auteur Jiew Meng | 2010-08-27
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne:
En d'autres termes: supprimer le point d'interrogation de la
string?
.System.String
est un type de référence et peut-être déjànull
. LeNullable<T>
structure peut être utilisée uniquement sur les types de valeur.Il est important de noter que ceci n'est possible en C# 4 et au-delà.
tiens juste à ajouter, le code peut être réduit à
endMarker = endMarker ?? startMarker
OriginalL'auteur Steven
Vous avez besoin de surcharger la méthode pour avoir un appel sans le "facultatif" paramètre. Alors dans cette méthode vous suffit d'appeler la méthode passage en le même paramètre deux fois:
OriginalL'auteur cjk
Ne pouvez-vous pas tout simplement faire quelque chose comme ceci:
endMarker
êtrestartMarker
quoi qu'il arrive.mieux maintenant, ou dois-je viens de quitter alors que je suis en retard?
Vous avez encore complètement inutile ligne...
Mais ne serait-il fonctionner comme un vilain hack? c# noob ici, alors allez facile
Vous ne pouvez pas avoir un
Nullable<string>
(oustring?
qui est la même) - une chaîne de caractères est déjà nullable (c'est un type de référence)OriginalL'auteur MrBliz