.NET类属性 - 带参数的Setter?

时间:2011-11-14 21:22:45

标签: c# .net getter-setter

.net的一个很好的特性是类属性 - 包含gettter和类字段的setter(它是私有的,但访问器方法是ussualy public)。从一个类的外部来看,这个属性看起来像一个字段,并没有使用getter和setter的名字来激活intellisense。

通常的语法是

private bool _isReadOnly;
public bool IsReadOnly
{
    get { return _isReadOnly; }
    set { _isReadOnly = value; }
}

或隐式声明

public bool IsReadOnly
{
get;
set;
}

这非常好,两个访问器甚至可以有不同的访问修饰符,例如。私人二传手。

我的问题是:.NET是否支持带有参数的setter或getter?喜欢使用带有两个参数的setter - 例如 - 一个是要设置的值,另一个是bool,表示类似“通知侦听器有关更改”或“如果更新的值失败检查则不覆盖旧值”或类似的东西。 getter的参数可以是格式化输出的一些选项,或者返回的值是否应该是旧等的克隆。

谢谢。我确实需要它来实现任何特定的目标,所以不需要发布变通方法,我只是想知道.net属性中是否有这样的东西。

4 个答案:

答案 0 :(得分:2)

否 - 属性仅用于检索或设置值。对于您的示例,您需要使用方法。

答案 1 :(得分:1)

VB.NET支持属性上的参数。

C#没有。

答案 2 :(得分:1)

c#DOES NOT 支持带参数的setter或getter。

答案 3 :(得分:0)

都能跟得上;但是,您可以使get / set访问器具有一些很好的检查逻辑。如果您设置了另一个字段(在get / set之外),则可以在“set”更新期间检查该字段,以根据条件分支逻辑。

private bool positiveOnly;
private int _myNum;

public int MyNum
{ 
   get {return _myNum;}
   set
   {
      // use old if positive only and value less than 0
      _myNum = (positiveOnly && value < 0) ? _myNum : value;
   }
}

public void MyMethod()
{
   positiveOnly = true;
   MyNum = Convert.ToInt32(txtMyTextBox.Text);
}