首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于get的问题;set;

关于get的问题;set;
EN

Stack Overflow用户
提问于 2011-01-13 06:47:04
回答 4查看 12.6K关注 0票数 1

我想在每次更改某个类属性时设置一个已修改的标志,如下所示

代码语言:javascript
复制
public bool Modified { get; set; }
public bool Enabled { get; set { Modified = true; } }

问题是我有一个错误,编译器要求我为get声明一个主体;我不想声明一个单独的私有变量,有没有其他方法可以做到这一点。

c#,net-2

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 06:48:04

不是的。如果你想要一个显式的setter,你不能使用自动的getter。因此,您必须具备以下内容:

代码语言:javascript
复制
private bool _Enabled;
public bool Modified { get; set; }
public bool Enabled
{
    get 
    {
        return _Enabled;
    }
    set 
    {
        _Enabled = value; 
        Modified = true;
    }
}
票数 6
EN

Stack Overflow用户

发布于 2011-01-13 06:49:36

这是不可能的。C#不允许您为getset中的一个或另一个指定主体,但会自动实现另一个主体。如果您需要这样做,您需要一个带有后备字段的手动属性。

请注意,您需要的内容如下所示:

代码语言:javascript
复制
public bool Modified { get; set; }

private bool enabled;
public bool Enabled {
    get { return this.enabled; }
    set {
        if(this.enabled != value) {
            this.enabled = value;
            this.Modified = true;
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-01-13 06:50:45

我认为您需要完整地编写Enabled的getter和setter:

代码语言:javascript
复制
public bool Modified { get; set; }

private bool enabled;

public bool Enabled
{
    get { return enabled; }

    set
    {
        if (enabled != value)
        {
            Modified = true;
            enabled = value;
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4674886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档