web-dev-qa-db-fra.com

Accesseurs et mutateurs sténographiques

J'apprends le C # et j'apprends à rendre les champs privés pour la classe et à utiliser les Getters et les Setters pour exposer les Méthodes au lieu des valeurs des champs.

Les get; set; in Méthode 1 et Méthode 2 équivalent? par exemple. l'un est-il un raccourci de l'autre?

class Student
{
    // Instance fields
    private string name;
    private int mark;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public int Mark
    {
        get { return mark; }
        set { mark = value; }
    }
}

Enfin, est-ce que Méthode 2 serait utilisé lorsque vous souhaitez par exemple effectuer un calcul avant d'obtenir ou de définir une valeur? par exemple. convertir la valeur en pourcentage ou effectuer une validation? par exemple.

class Student
{
    // Instance fields
    private string name;
    private double mark;
    private int maxMark = 50;

    // Method 1
    public string Name { get; set; }

    // Method 2
    public double Mark
    {
        get { return mark; }
        set { if ( mark <= maxMark ) mark = value / maxMark * 100; }
    }
}
17
Gravy

Oui, la méthode 1 est un raccourci vers la méthode 2. Je suggère d'utiliser la méthode 1 par défaut. Lorsque vous avez besoin de plus de fonctionnalités, utilisez la méthode 2. Vous pouvez également spécifier différents modificateurs d'accès pour get et set.

11
Robin

Oui le Method2 est la voie à suivre lorsque vous avez une fonction getter et setter personnalisée. Par défaut, lorsque vous utilisez la méthode 1, une propriété privée par défaut est gérée en interne. Veuillez vous référer à cette URL pour plus de détails.

Échantillon:

string _name;

public string Name 
{
    get => _name;
    set => _name = value;
}
15
Saravanan