第一种解决方案优于第二种解决方案的优势是什么?
class TestClass
{
public int value
{
get;
set;
}
}
static void Main()
{
var myTest = new TestClass();
myTest.value = 3;
System.Console.WriteLine(myTest.value);
}
}
VS
class TestClass
{
public int value;
}
static void Main()
{
var myTest = new TestClass();
myTest.value = 3;
System.Console.WriteLine(myTest.value);
}
我在SO上搜索这个问题,但我一直看到的最佳答案是,如果您需要更改如何设置/获取(添加验证或其他内容),您将无需返回代码并在使用属性的任何地方添加它。如果您确实需要添加此验证,那么您是否只能将其从示例二更改为示例一而无需任何其他更改?我的理解是,即使你想在get / set中添加一些验证,你也不能像我的例子那样使用自动生成的方式,无论如何都需要更改它。如果是这样的话,为什么甚至有get / set?
答案 0 :(得分:-1)
Getters和Setter至少有两个常见用途:第一个是将c / c ++代码暴露给脚本语言(例如Lua),第二个是提供对可能非原子数据类型的线程安全原子访问(即,您提供首选线程安全机制的地方)。