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

时间:2019-01-31 13:09:55

标签: c# oop

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

下面是我的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中有什么问题吗?因为我想我的类看起来更干净没有私人领域:)

1 个答案:

答案 0 :(得分:2)

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

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

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

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

public string FullName => FirstName + LastName;

或public,但只能在以下类型中写入:

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

public string FullName => FirstName + LastName;