【发布时间】:2010-01-22 14:05:41
【问题描述】:
我创建了这个“问题”作为社区维基,因为没有正确或错误的答案。我只想知道社区对这个特定问题的看法。
如果您有一个带有实例变量的类,并且您还为这些实例变量创建了简单的 getter 和 setter 属性,您应该在自己的类中使用这些属性,还是应该始终使用实例变量?
在 C# 3.0 中使用自动属性使这个决定变得更加困难。
使用属性:
public class MyClass
{
private string _name;
// could be an auto-property of-course
public string Name { get { return _name; } set { _name = value; } }
public void Action()
{
string localVar = Name;
// ...
Name = "someValue";
// ...
}
}
使用实例变量:
public class MyClass
{
private string _name;
public string Name { get { return _name; } set { _name = value; } }
public void Action()
{
string localVar = _name;
// ...
_name = "someValue";
// ...
}
}
(对于那些讨厌成员前缀的人,我深表歉意)
就个人而言,我总是使用后者(实例变量),因为我觉得属性应该只供其他类使用,而不是你自己。这就是为什么我也大多远离自动属性。
当然,当属性设置器(或获取器)不仅仅包装实例变量时,情况会发生变化。
是否有令人信服的理由来选择其中一个?
【问题讨论】:
标签: c# coding-style properties design-patterns