.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属性中是否有这样的东西。
答案 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);
}