我注意到有些人声明了一个私有变量,然后是一个带有get和set语句的公共变量:
private string myvariable = string.Empty; public string MyVariable { get { return myvariable; } set { myvariable = value ?? string.Empty; } }
然后有些人只做以下事情:
public string MyVariable { get { return value; } set { MyVariable = value; } }
作为一个没有智慧的熊(是的,我有孩子......你为什么问?)我无法弄清楚为什么你会选择一个而不是另一个.使用公共变量是否同样有效,您可以使用变量的set方法随时设置?
任何人都可以为我阐明这一点吗?
更新:在几个人指出它不能编译后,我纠正了第二个例子.对此感到抱歉,但问题仍然存在......
您的第二个示例将无法编译,因为getter的值变量不存在.此外,setter会导致同名的StackOverflow异常!
在C#3.0中,您可以使用以下语法让编译器创建私有后备变量:
public string MyVariable { get; set; }
但是,这不会给你第一个例子的额外空值检查.如果您需要在setter中使用自定义逻辑,则可能必须坚持使用第一个示例的方法.
正如其他人所提到的,你的第二个例子没有编译.
但是,没有使用公共领域有很好的理由.实际上,您的示例演示了其中一个 - 对于此属性,即使您将其设置为null,如果再次请求它,也会返回一个空字符串.不管是恰当与否对于财产(这是稍微奇怪)取决于确切使用-但它不是一个公共领域的行为.
我有一篇关于为什么属性比公共领域更好的文章,你可能会发现它们很有用.