C# 的 Get 和 Private Set 与返回私有字段的 Get 的区别

3

我思考了很长时间,关于使用具有get和private set修饰符的属性与返回私有字段的属性之间的优缺点。

以下是一个例子:

public bool Example { get; private set; }

并且

private bool example;
public bool Example { get { return example; } }

使用其中之一有哪些缺点和优点?

我认为在编译时,这两者之间的差异消失了。 get; private set; 只是语法糖,仅仅是一个编码快捷方式。 - Glenn Ferrie
2个回答

5

少一行代码。除此之外,从功能上讲,它们完全相同。本质上,它是一种语法糖。


3
第二个例子是完全只读属性,而第一个API有一个私有setter。 - Nikita
2
其实不是,因为您仍然可以访问变量成员。一个真正的只读属性将没有设置方法,并且只能在构造函数中初始化。 - Phil1970

1

我认为即使使用自动get和set的语法糖,也有一些事情取决于设计。

public bool Example { get;  set; }

上述代码将由编译器创建一个私有后置字段,我们无法访问。但是,如果我们创建一个后备字段,我们就可以访问它,像下面这样使用它进行空检查。
private bool example;
public bool Example 
{ 
get
{
  return example;
}
set
{
     if(value != example)
     {
       example = value;
       // here you can write some property change notifications or some other logic. 
     }
} 
}

无论哪种方式,最终结果都是相同的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接