我应该使用哪种场景改变类的方法里面私有字段/属性:正确使用的字段被封装在属性的类内
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。
只是一个方面的评论 - 这通常是一个坏主意,只有大写字母的名称和属性不同。常见的约定是命名字段_intVar和_stringVar,并且避免错误类型调用错误的可能性,或者更糟糕的是,如果你从'IntVar'中'返回IntVar',就会得到StackOverflowException。 – 2012-04-20 09:55:08
+1感谢提示 – adams 2012-04-20 09:59:44
但[根据微软](http://msdn.microsoft.com/en-us/library/ta31s3bc(v = vs.71).aspx),我们也不应该使用前缀字段名称。 – Botz3000 2012-04-20 10:03:55