C#属性:如何使用没有私有字段的自定义设置属性?

时间:2011-01-28 22:23:54

标签: c# properties

我想这样做:

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

是否可以使用自动生成的私有字段?
或者我需要这样实现它:

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

5 个答案:

答案 0 :(得分:85)

如果您想在getter或setter中执行任何自定义操作,则无法再使用自动属性。

答案 1 :(得分:26)

您可以尝试这样的事情:

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

答案 2 :(得分:14)

这是不可能的。自动实现的属性或自定义代码。

答案 3 :(得分:5)

根据您的方案,您需要完全实现它。 getset都必须自动实现或完全一起实现,而不是两者的组合。

答案 4 :(得分:2)

从C#7开始,您可以为属性的getset访问器使用表达式主体定义。

See more here

private string _name;

public string Name
{
    get => _name;
    set
    {
        DoSomething();
        _name = value;
    }
}