C # 4.0 - Comment gérer les paramètres de chaîne optionnels
Ce code n'est pas valide:
private void Foo(string optionalString = string.Empty)
{
//do foo.
}
Mais ce code est:
private void Foo(string optionalString = "")
{
//do foo.
}
Pourquoi? Car les chaînes de caractères.Vide est un champ en lecture seule, pas une constante, et les valeurs par défaut pour les paramètres facultatifs doit être une constante de compilation.
Donc, sur ma question... (enfin, préoccupation)
C'est ce que j'ai eu à faire:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
//do foo.
if (!string.IsNullOrEmpty(optionalString))
//etc
}
Comment faites-vous pour gérer option paramètres de la chaîne?
Pourquoi ne peuvent-ils pas faire Chaîne de caractères.Vide une constante de compilation?
source d'informationauteur RPM1984
Vous devez vous connecter pour publier un commentaire.
Ummm... quel est le problème avec la chaîne de optionalParm = "" encore une fois? Pourquoi est-ce mauvais? Vous pensez vraiment que vous avez besoin d'une constante symbolique pour une chaîne vide dans ce cas? Que faire alors?
Est-ce que semblent en tout bête pour vous?
si vous n'aimez pas "" la valeur que vous pouvez utiliser la valeur par défaut(chaîne de caractères).
J'ai joué avec lui et il est autorisé.
La meilleure façon de les gérer est avec:
De sorte que vous ne pouvez pas utiliser des chaînes de caractères.Vide. Tout le monde reconnaît "", mais si j'ai trouvé
optionalString = nullString
je ne serais pas vraiment quoi penser. Si rien d'autre, le nom de la choseemptyString
--il n'est pas nul!Avertissement d'Analyse du Code 1026 dit de ne pas utiliser les paramètres facultatifs. Il est préférable de style à utiliser la surcharge des méthodes, comme ceci:
Je vais répondre à cette question.
Why can they not make String.Empty a compile-time constant?
Voici le démonter code par l'idéologie de la Chaîne.cs dans mscorlib.dll
Donc dans la plate-forme windows, chaîne.Vide est exactement "". Mais savez-vous, Martien avoir une définition différente pour le Vide et WhitespaceChars dans leurs OS.
Si vous êtes prêt à jouer les perdre et de les traiter null, "", et les caractères espace pour être la même, alors vous pouvez par défaut de
null
. Cela devient très pratique si un nom d'utilisateur et mot de passe sont des champs optionnels en raison d'une possibilité de connexion de confiance à un db. Vous pouvez changer cette logique pour réinitialiser les chaînes denull
et donc de modifier l'affirmer et de leif
. L'important est d'avoir une convention cohérente.