Question Comment dois-je utiliser les propriétés dans C #?


Je ne suis pas sûr, car en Java, getter / setter est un peu différent, mais quelle est la manière de coder ce genre de choses?

Option a.)

    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private int time;

    public int Time
    {
        get { return time; }
        set { time = value; }
    }

b.)

    private string _name;
    private int _time;

    public string name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int time
    {
        get { return _time; }
        set { _time = value; }
    }

c.)

   public string name {get; set;}
   public int time {get; set;}

Ok, il y a quelques exemples. Qu'est-ce qui aurait l'air mieux? Devrais-je écrire toutes les déclarations de variables privées d'abord, puis les propriétés ou devrais-je grouper mes déclarations de variables et de propriétés les unes à côté des autres?


10
2017-07-06 13:40


origine


Réponses:


Que diriez-vous de d, suivant les conventions de nommage .NET:

public string Name { get; set; }
public int Time { get; set; } // Odd type for time, admittedly...

Ne vous embêtez pas à écrire la propriété manuellement, à moins que vous ne fassiez quelque chose de non trivial.

Si vous faire écrivez l'implémentation de la propriété manuellement, à vous de choisir comment nommer la variable privée. Personnellement, j'utiliserais:

private string name;
public string Name
{
    get { /* whatever */ }
    set { /* whatever */ }
}

... mais si vous voulez utiliser des traits de soulignement, c'est votre prérogative.

En ce qui concerne la commande des membres, c'est encore plus votre choix. En supposant que vous travaillez avec une équipe, parlez avec l'équipe et voyez ce que la convention locale est.


26
2017-07-06 13:42



Si vous n'avez pas besoin d'accéder aux champs de sauvegarde sous-jacents, alors les propriétés automatiques sont la méthode suggérée (C). Cependant, conformément à la convention de nommage .NET, ils doivent être PascalCase.

public string Name { get; set; }
public int Time { get; set; }

11
2017-07-06 13:42



Les deux premiers sont juste nommer les convictions que vous devriez choisir en fonction de la société / groupe de développement ou de votre propre décision.

Le troisième cas est la manière rapide de décaler le même propriété, où le réel field sera généré par runtime lui-même.

Court Pros: c'est court et facile.

Contre Court: Ne peut pas mettre quelque chose à l'intérieur geter / setter, ne peut pas mettre le point d'arrêt dans Visual Studio...

J'espère que cela t'aides.


6
2017-07-06 13:42



Dans votre cas spécifique (pas de logique sur getter ou setter), la meilleure option est C (avec un petit changement sur les noms de propriétés pour suivre les normes C #)

 public string Name {get; set;}
 public int Time {get; set;}

3
2017-07-06 13:42



Cela dépend du cas, lorsque vous définissez les champs, un caractère de soulignement est utilisé, et si vous avez juste besoin d'un simple getter / setter, il n'est pas nécessaire de définir les champs vous-même car le compilateur les définira en arrière-plan.


3
2017-07-06 13:43



J'irais pour l'option, la plupart des autres ont déjà posté.

public string Name {get; set;}
public int Time {get; set;}

Notez que vous pouvez modifier le niveau de protection sur le setter et le getter individuellement, par ex.

public string Name {get; protected set;}
protected int Time {get; private set;}

Vous ne pouvez utiliser qu'une protection plus élevée que celle appliquée à la propriété du trou.


2
2017-07-06 14:25



public string Name {get; set;}
public int Time {get; set;}

1
2017-07-06 13:42