web-dev-qa-db-fra.com

Propriétés C #: comment utiliser la propriété set personnalisée sans champ privé?

Je veux faire ça:

public Name
{
    get;
    set
    {
        dosomething();
        ??? = value
    }
}

Est-il possible d'utiliser le champ privé généré automatiquement?
Ou est-il nécessaire que je l'implémente de cette façon:

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        dosomething();
        name = value
    }
}
66
Peterdk

Une fois que vous voulez faire quelque chose de personnalisé dans le getter ou le setter, vous ne pouvez plus utiliser les propriétés automatiques.

82
BrokenGlass

Vous pouvez essayer quelque chose comme ça:

public string Name { get; private set; }
public void SetName(string value)
{
    DoSomething();
    this.Name = value;
}
23
Artur Brutjan

Ce n'est pas possible. Propriétés implémentées automatiquement ou code personnalisé.

13
Femaref

Il est nécessaire que vous l'implémentiez pleinement en fonction de votre scénario. get et set doivent être implémentés automatiquement ou intégralement, et non une combinaison des deux.

4
Jeff Yates

À partir de C # 7, vous pouvez utiliser les définitions de corps d'expression pour les accesseurs get et set de la propriété.

Voir plus ici

private string _name;

public Name
{
    get => _name;
    set
    {
        DoSomething();
        _name = value;
    }
}
0
Colin Banbury