正如我的问题所说,如果我不应该使用私有字段,我会感到困惑。
下面是我的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中有什么问题吗?因为我想我的类看起来更干净没有私人领域:)
答案 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;