当前位置:  开发笔记 > 编程语言 > 正文

为什么自动属性需要getter和setter?

如何解决《为什么自动属性需要getter和setter?》经验,为你挑选了3个好方法。

在C#中,如果我声明一个自动实现的属性,为什么我必须声明get和set部分?

public string ThisWorks { get; set; }

public string ThisDoesnt { get; }

这不仅仅是语法糖 - 即编译器为属性插入一个私有字段?那问题为什么呢?

好奇.



1> stusmith..:

如果你没有一个二传手 - 那么你将如何设置这个属性?

顺便提一下,您可以指定辅助功能,例如:

public string Foo
{
  get;
  private set;
}



2> Jon Skeet..:

如果没有setter,您将永远无法提供值 - 因为您没有任何方法来指定支持变量的名称.

我已经请求了一个只读自动属性,声明如下:

public string ReadonlyProperty { get; readonly set; }

这将创建一个只读的支持变量,一个只有一个getter的属性,并将对setter的所有调用转换为对该变量的直接访问.你只能在构造函数中调用setter - 就像普通的只读变量一样.

我们将看看这个请求是否有任何好处...它真的很遗憾它现在不在那里,因为它使得更难实现不可变类型而不是可变类型:(



3> GalacticCowb..:

自动实现的属性没有可访问的私有存储,因此如果没有setter,您将无法设置该值,使其完全无用.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有