2010-11-15 21 views

Répondre

1

Les constructeurs de puits sont les meilleurs pour ce faire. Comment on peut appeler une méthode aussi.

Vérifiez lien suivant trop Initializing C# auto-properties

+0

Cela fonctionne parfaitement, en particulier la solution [DefaultValue ()]. – Giffyguy

+0

Yahoo ..! ....... Codage heureux – Singleton

+0

Non, ils ne le sont pas. Ils peuvent être le moyen le plus efficace en termes de vitesse du CPU, mais en termes de maintenance - dans le cas de> 1 arguments - il est préférable d'utiliser l'assignation sur place, surtout si aucune logique particulière n'est impliquée. Exemple: nouvelle barre() {x = 5, y = 7}; Cela force l'utilisateur de la barre de classe à nommer toutes les propriétés/champs, tandis que l'utilisation du constructeur avec des arguments permet juste d'utiliser des noms (sans mentionner, la dernière méthode n'est possible qu'avec Net 4.0). – greenoldman

2

Utilisez-vous des propriétés mises en œuvre automatiquement? Les propriétés du type de valeur seront initialisées à leurs valeurs par défaut. Les types de référence seront initialisés à null.

Si vous voulez les initialiser à un autre, je pense que la meilleure option est de les définir dans le constructeur.

Si vous n'utilisez pas les propriétés implémentées automatiquement, vous pouvez les initialiser là où elles sont déclarées.

Il sera également utile de garder à l'esprit la order in which the objects fields and constructors are initialized.

2

Si vous prenez parti des propriétés automatiques, le constructeur est la meilleure façon. Si ce n'est pas le cas, votre variable membre peut définir la valeur par défaut.

private string _someString = "Hello."; 

Mais, vous devrez définir vous-même le getter et le setter.

public string SomeString 
{ 
    get { return _someString; } 
    set { _someString = value; } 
} 

Ce qui ne serait pas plus simple que de simplement définir la valeur par défaut dans le constructeur.

2

Si vous voulez juste initialiser les valeurs de propriété, alors les constructeurs sont simplement assez je ne vois pas pourquoi vous pensez qu'ils ne sont pas simples.

Cependant, vous pouvez le faire si vous le souhaitez, vous pouvez initialiser la variable comme ceci:

int _myProperty = 5; 
public int MyProperty 
{ 
    get{ return _myProperty ;} 

set { _myProperty=value; } 
} 
2

Je me plais à penser à ce sujet un peu différemment. Si la valeur est obligatoire pour la création d'une instance, elle doit être un paramètre pour le constructeur.

Cependant, si la valeur est optionnel, alors le paramétrer via une propriété est correct.