Je lis Effective C # de Bill Wagner. Dans l' élément 14 - Minimiser la logique d'initialisation en double , il montre l'exemple suivant d'utilisation de la nouvelle fonctionnalité de paramètres facultatifs dans un constructeur:
public MyClass(int initialCount = 0, string name = "")
Notez qu'il a utilisé à la ""
place de string.Empty
.
Il commente:
Vous noterez [dans un exemple ci-dessus] que le deuxième constructeur a spécifié "" pour la valeur par défaut sur le paramètre de nom , plutôt que la plus habituelle
string.Empty
. C'est parce que cestring.Empty
n'est pas une constante de compilation. C'est une propriété statique définie dans la classe de chaînes. Étant donné qu'il ne s'agit pas d'une constante de compilation, vous ne pouvez pas l'utiliser pour la valeur par défaut d'un paramètre.
Si nous ne pouvons pas utiliser la string.Empty
statique dans toutes les situations, cela ne va-t-il pas à l'encontre de son objectif? J'ai pensé que nous l'utiliserions pour être sûrs d'avoir un moyen indépendant du système de faire référence à la chaîne vide. Ma compréhension est-elle erronée? Merci.
MISE
À JOUR Juste un commentaire de suivi. Selon MSDN:
Chaque paramètre facultatif a une valeur par défaut dans le cadre de sa définition. Si aucun argument n'est envoyé pour ce paramètre, la valeur par défaut est utilisée. Les valeurs par défaut doivent être des constantes.
Ensuite, nous ne pouvons pas utiliser System.Environment.NewLine
ni l'un ni l'autre, ni utiliser des objets nouvellement instanciés comme valeurs par défaut. Je n'ai pas encore utilisé VS2010, et c'est décevant!