Lors de l'initialisation en C# constructeurs ce qui est mieux: initialiseur de listes ou de la cession?
Classe A utilise un initialiseur de liste pour définir le paramètre de la valeur, tandis que la Catégorie B utilise affectation dans le corps du constructeur.
Quelqu'un peut donner aucune raison de préférer l'un sur l'autre tant que je suis cohérent?
class A
{
String _filename;
A(String filename) : _filename(filename)
{
}
}
class B
{
String _filename;
B(String filename)
{
_filename = filename;
}
}
Vous devez vous connecter pour publier un commentaire.
Le premier n'est pas légal en C#. Les deux seuls éléments qui peuvent apparaître après les deux-points dans un constructeur sont
base
etthis
.Donc j'irais avec le second.
Vous dire que C++ au lieu de C#?
Pour le C++, initialiseur de listes sont mieux que la cession pour un couple de raisons:
C# dispose d'une fonction appelée Objet De L'Initialiseur. Vous pouvez fournir des valeurs qui le compilateur va utiliser pour initialiser les membres spécifiés, et d'appeler le constructeur par défaut. Pour que cela fonctionne, vous avez besoin d'avoir un constructeur par défaut public.