2017-04-17 110 views
2

我问了自己相当长的一段时间,使用具有修饰符获取和私人设置的属性与具有返回私有字段的属性相比,有哪些优缺点。C#获取和私人设置与获取返回私人领域

下面是一个例子:

public bool Example { get; private set; } 

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

什么是使用一个比其他的缺点和优点?

+0

我想在编译的时候,之间的区别两个消失。 'get;私人设置;'只是语法糖,只是一个编码捷径。 –

回答

4

1行代码。除此之外,它们具有完全相同的功能。它基本上是句法糖。

+3

...第二个例子是完全_read-only_属性,而第一个AIP有一个私人setter。 – Nikita

+2

不是真的,因为您仍然可以访问可变成员。一个真正的只读属性没有设置,只能在施工时初始化。 – Phil1970

0

有几件事情,即使它是一个语法糖,支持自动获取设置,在我看来,这取决于设计

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. 
    } 
} 
} 

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