La classe A utilise une liste d'initialisation pour définir le membre sur la valeur de paramètre, tandis que la classe B utilise l'affectation dans le corps du constructeur.
Quelqu'un peut-il donner une raison de préférer l'un à 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;
}
}
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
et this
.
J'irais donc avec le deuxième.
Voulez-vous dire C++ au lieu de C #?
Pour C++, les listes d'initialisation sont meilleures que l'affectation pour deux raisons:
C # a une fonctionnalité appelée Object Initializer . Vous pouvez fournir des valeurs que le compilateur utilisera pour initialiser les membres spécifiés et appeler le constructeur par défaut. Pour que cela fonctionne, vous devez avoir un constructeur public par défaut.