我想在每次更改某个类属性时设置一个已修改的标志,如下所示
public bool Modified { get; set; }
public bool Enabled { get; set { Modified = true; } }问题是我有一个错误,编译器要求我为get声明一个主体;我不想声明一个单独的私有变量,有没有其他方法可以做到这一点。
c#,net-2
谢谢
发布于 2011-01-13 06:48:04
不是的。如果你想要一个显式的setter,你不能使用自动的getter。因此,您必须具备以下内容:
private bool _Enabled;
public bool Modified { get; set; }
public bool Enabled
{
get
{
return _Enabled;
}
set
{
_Enabled = value;
Modified = true;
}
}发布于 2011-01-13 06:49:36
这是不可能的。C#不允许您为get或set中的一个或另一个指定主体,但会自动实现另一个主体。如果您需要这样做,您需要一个带有后备字段的手动属性。
请注意,您需要的内容如下所示:
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;
}
}
}发布于 2011-01-13 06:50:45
我认为您需要完整地编写Enabled的getter和setter:
public bool Modified { get; set; }
private bool enabled;
public bool Enabled
{
get { return enabled; }
set
{
if (enabled != value)
{
Modified = true;
enabled = value;
}
}
}https://stackoverflow.com/questions/4674886
复制相似问题