Je suis de lecture Efficace C# par le projet de Loi Wagner. Dans la Rubrique 14 - Réduire au minimum la Double Logique d'Initialisation, il montre l'exemple suivant en utilisant la nouvelle option fonction de paramètres dans un constructeur:
public MyClass(int initialCount = 0, string name = "")
De l'avis qu'il a utilisé ""
au lieu de string.Empty
.
Il commente:
Vous remarquerez [dans l'exemple ci-dessus] que le deuxième constructeur spécifié "" pour la valeur par défaut sur le nom du paramètre, plutôt que le plus habituel,
string.Empty
. C'est parce qu'string.Empty
n'est pas une constante de compilation. C'est une propriété statique définie dans la classe string. Parce que ce n'est pas une constante de compilation, vous ne pouvez pas l'utiliser pour la valeur par défaut pour un paramètre.
Si nous ne pouvons pas utiliser l' string.Empty
statique dans toutes les situations, puis n'est-ce pas que la défaite de l'objectif? Je pensais que nous allions utiliser pour être sûr que nous avons un système indépendant de moyens de se référer à la chaîne vide. Est ma compréhension de mal? Merci.
Mise à JOUR
Vient un suivi des commentaires. Selon MSDN:
Chaque paramètre a une valeur par défaut dans le cadre de sa définition. Si aucun argument n'est transmis pour ce paramètre, la valeur par défaut est utilisée. Valeurs par défaut doivent être constantes.
Alors nous ne sommes pas en mesure de les utiliser System.Environment.NewLine
soit, ou de l'utilisation nouvellement instancié objets de valeurs par défaut. Je n'ai pas utilisé VS2010 encore, et c'est décevant!