wake-up-neo.net

C # -Eigenschaften: Wie verwendet man eine benutzerdefinierte Eigenschaft ohne privates Feld?

Ich möchte das machen:

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

Kann das automatisch generierte private Feld verwendet werden?
Oder ist es erforderlich, dass ich es so implementiere:

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

Wenn Sie im Getter oder im Setter etwas benutzerdefiniertes tun möchten, können Sie keine automatischen Eigenschaften mehr verwenden.

82
BrokenGlass

Sie können so etwas versuchen:

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

Das ist nicht möglich. Entweder automatisch implementierte Eigenschaften oder benutzerdefinierter Code.

13
Femaref

Es ist erforderlich, dass Sie es in Ihrem Szenario vollständig implementieren. Sowohl get als auch set müssen entweder automatisch oder vollständig zusammen implementiert werden, keine Kombination der beiden.

4
Jeff Yates

Seit C # 7 können Sie Ausdruckskörperdefinitionen für die Accessors get und set der Eigenschaft verwenden.

Mehr sehen hier

private string _name;

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