2011-09-24 6 views
0

J'ai un projet de bibliothèque de classes. J'ai une propriété là-bas comme ci-dessous. Ce n'est pas une propriété en lecture seulePropriété getter setter en C#

private Int32 ABC ; 
public Int32 ABCD 
     { 
      set 
      { 
       this.ABC = value; 
      } 
      get 
      { 
       return this.ABC; 
      } 
     } 

Ma question est, est-il nécessaire de déclarer la variable privée pour le même et le getter/setter?

EDIT

Je veux dire pourrait-il être comme ci-dessous?

public Int32 ABCD {} 
+0

Suppression de la "{get; set;}" de la question. – Pankaj

+1

Pourquoi? C'est la bonne façon de le faire. –

+0

Mais les réponses ci-dessous sont contraires à vous !!!! – Pankaj

Répondre

5

Automatic property déclarations exigent les get; set; déclarations contenues dans les accolades (ce qui est ce que vous aviez dans votre question initiale):

public Int32 ABCD { get; set; } 

Un bloc de propriété vide est pas valide.

1

Si vous faites le deuxième choix, C# créera le premier pour vous.

+0

Mis à jour ma question. – Pankaj

3

Utilisez les propriétés implémentées automatiquement présentées en C# 3.0 (VS 2008) ou version ultérieure.
http://msdn.microsoft.com/en-us/library/bb384054.aspx

public Int32 Abcd {get;set;} 

Le compilateur crée le champ de support pour vous. Cependant, il est anonyme et ne peut pas être consulté. Si plus tard vous trouvez le besoin d'accéder au champ de sauvegarde, vous pouvez le déclarer explicitement et réimplémenter le getter et le setter en utilisant ce champ sans casser votre interface.

1

Est-il nécessaire de déclarer la variable privée pour le même et le getter/setter?

Si vous voulez dire est-il nécessaire de utiliser la variable privée alors oui, il est (sauf si vous utilisez la méthode automatique mentionné par BoltClock) .Vous faut garder à l'esprit qu'il est un bloc de code complet , donc vous pouvez faire à peu près tout ce que vous aimez là - bien que vous devriez le faire avec raison, car vous ne voulez pas que quelque chose qui va trop ralentir l'accès aux propriétés. Par exemple, il peut y avoir des effets secondaires à la modification d'une propriété, c'est-à-dire qu'une autre propriété peut devoir être mise à jour, ou vous devez notifier que d'autres propriétés ont également été modifiées.

Si vous ne notifiez ou ne faites rien d'autre, la méthode getter/setter automatique est la plus rapide à développer (sans prétendre qu'elle est la plus rapide (ou la plus lente) à exécuter).

2

Utilisez la propriété automatique mis en œuvre, il interduced à partir de 2008:

public Int ABCD 
    { 
     set; 
     get; 
    } 

Mais la différence est la valeur par défaut, soit dans la propriété avec le champ de support, vous pouvez définir une valeur par défaut dans la variable mais cette valeur par défaut de cas est par défaut .net . (en fait vous devriez l'initier dans le constructeur pour la valeur par défaut).

1

vous pouvez faire comme ce

public string ABCD { get;set;}