繁体   English   中英

我应该在C#类中使用私有字段,还是应该使用公共属性?

[英]Should I use private fields in my C# class or public Properties are good enough?

正如我的问题所说,如果我不应该使用私有字段,我会感到困惑。

例如,这是我的Person类:

我知道当我想快速获取FullName时使用私有字段很有用。实际上,这只是我在一些吸气剂中添加附加代码的示例 ,因此我想避免使用私有字段,因此我可能会开始使用公共属性因为无论如何都会在后台私有字段中创建?

 private string _firstName;
 private string _lastName;

 public string FullName
 {
    get { return _firstName + _lastName; }
 }

无论如何,我可以做这样的事情,删除私有字段->仅添加公共属性吗? 我猜下面的代码没有问题。

 public string FirstName { get; set; }
 public string LastName  { get; set; }

 public string FullName
 {
   get { return FirstName + LastName; }
 }

我应该喜欢示例2吗? 我的意思是如果我留在示例2中有什么问题吗? 因为我希望我的课程在没有私有字段的情况下看起来更干净:)

答案实际上取决于您是否在公共API上使用名字/姓氏。 如果您这样做:2是理想的输入方便方式。 在运行时,由于使用了JIT魔术,所以1和2在很大程度上是无法区分的(除了对可访问性的关注之外),因此,您最好还是使用最方便,最有表现力的形式,通常是:2。

如果您愿意 ,甚至1都可以使用自动实现的私有属性,尽管实际上很难看到-大多数代码根据意图使用公共属性或私有字段。 公共领域和私有财产都是罕见的。

这也可能是有意义的有姓氏和名字公开,但只读,即

public string FirstName { get; }
public string LastName  { get; }

public string FullName => FirstName + LastName;

或公开,但只能在以下类型内写:

public string FirstName { get; private set; }
public string LastName  { get; private set; }

public string FullName => FirstName + LastName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM