我应该使用哪种场景来更改类方法/属性内的私有字段:
public class Example
{
private int intVar = 0;
private string stringVar = string.Empty;
public int IntVar
{
get { return this.intvar; }
set { this.intvar = value; }
}
public string StringVar
{
get { return this.stringVar ; }
set { this.stringVar = value; }
}
private void SomeMethod()
{
//change fields in this way:
this.intVar = 50;
this.stringVar = "changed";
//or that way(through properties):
this.IntVar = 50;
this.StringVar = "changed";
}
}
也许在这个例子中这没有什么区别,但是如果有人向属性添加额外的代码,并且通过属性更改字段会改变其他一些事情怎么办?
你能说哪种方式更好,或者实际上没有什么区别吗?
我知道从 C# 3.0 开始我可以编写自动实现的属性,但这是 C# 2.0。
我想说使用属性通常会更好。如果 getter 和 setter 很简单,那么它们无论如何都可能会在运行时因抖动而内联。正如您所说,也许会对财产代码进行其他更改。
一个常见的更改是通过实现 INotifyPropertyChanged 添加更改通知。如果您直接设置字段,听众将不会收到通知。
我更喜欢我的类使用它们自己的公共接口而不是内部接口。对我来说,一个例外是当我明确不想要任何副作用时。但这种情况很少发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)