2011-01-12 31 views
1

我想设置修改标志当过我改变类属性的一个如下图所示问题得到;组;

public bool Modified { get; set; } 
public bool Enabled { get; set { Modified = true; } } 

问题是我有一个错误,编译器要求我声明主体为获取; 我宁愿不必声明一个单独的私有变量,是否有另一种方式来做到这一点。

C#,NET-2

感谢

回答

6

号如果你想要一个明确的制定者,你不能使用自动吸气。所以你必须有这样的东西:

private bool _Enabled; 
public bool Modified { get; set; } 
public bool Enabled 
{ 
    get 
    { 
     return _Enabled; 
    } 
    set 
    { 
     _Enabled = value; 
     Modified = true; 
    } 
} 
+1

将它们设置你也许可以只设置`Modified`是`在二传手TRUE`如果`_Enabled! =值`。 – jason 2011-01-12 22:53:50

+0

@Jason,我只是不停地像的问题。您可能是对的,取决于所需的行为。 – 2011-01-12 22:56:05

2

这是不可能的。 C#不允许你指定一个机构或一个其他的getset,但有其他的自动执行。如果您需要这样做,您需要一个带有后台字段的手动属性。

注意,你想是这样的:

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; 
     } 
    } 
} 
1

我认为你需要写getter和setter用于启用全:

public bool Modified { get; set; } 

private bool enabled; 

public bool Enabled 
{ 
    get { return enabled; } 

    set 
    { 
     if (enabled != value) 
     { 
      Modified = true; 
      enabled = value; 
     } 
    } 
} 
0

因为自动生成的成员将用于创建get; set;财产,那么你不能宣称他们中的一个,否则你必须自己