我对OOP非常陌生,并且更深入地研究了一些事情,但是我对C#中这三种方法之间存在一些混淆,哪一个最好,两者之间有什么区别?他们。面向对象 - 类变量
例1 因此,让这一个,这(让我明白)开始就是错误的方式做到这一点:
public class MyClass
{
public string myAttribute;
}
,并以这种方式,我可以直接使用设置属性:
myObject.myAttribute = "something";
例2 我所看到的未来方式,这似乎是recomended是这样的:
public class MyClass
{
public string myAttribute { get; set;}
}
有了getter和setter,这里我不明白前两个之间的区别,因为变量仍然可以直接在对象上设置?
例3 第三种方式,那我理解其背后的理论方法,创造了一套功能
public class MyClass
{
string myAttribute;
public void setAttribute(string newSetting)
{
myAttribute = newSetting;
//obviously you can apply some logic in here to remove unwanted characters or validate etc.
}
}
那么,什么是三者之间的区别是什么?我假设例1是一个很大的禁忌,所以最好在2和3之间,为什么使用另一个呢?
感谢
请参阅[字段和属性在C#中有什么区别?](http://stackoverflow.com/questions/295104/what-is-the-difference-between-a-field-anda-a-属性功能于c)中。字段应该保持私有,你使用getter和/或setter公开属性。另请参阅[字段](http://msdn.microsoft.com/zh-cn/library/ms173118.aspx)和[属性](http://msdn.microsoft.com/zh-cn/library/x9fsa0sw。 aspx)在MSDN上的C#编程指南中的章节。 – CodeCaster