什么是被置为简单变量的好处[复制](what is the benefit of get set f

2019-07-03 16:45发布

可能重复:
公共字段与自动属性

我想这将是某处回答,但我不会在老地方找到它。 我想知道,什么是这样做的好处

private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}

要么

public int foo {get; set;}

经过短短

public int foo;

我可以看到惠若需要更多复杂的操作,但什么是一个简单的情况下,这样的好处呢?

Answer 1:

这个问题在这里问了很多次。 没有明确的证据表明受益FO 这些情况下(内财产没有逻辑)。 会说更多的,是使用现场,你得到一些最小的(纳米)速度优势,但99.99%的情况下,不相关的。

通过MS定义的指导方针 建议使用properties ,为您的代码的expandibility和maintanability。 所以,下面该准则能够更方便工作,为别人,不熟悉的代码来阅读它。



Answer 2:

其实,所有的准则是有关创建可重用的库。 在那里,当你创建一个property (使用的get / set),你还可以创建是当有人获取或设置值(如添加验证等)不改变代码的外部定义执行的机会,以后再添加代码(从而不需要重新编译其他库)。 但这种没有价值,如果你总是重新编译整个解决方案,没有人其他人使用该库。

从使用属性的另一个好处是,你可以限制谁可以获取或设置的值。 例如,每个人都可以得到的价值,但只有派生类可以将其设置( protected )。

这就是说,它仍是推荐时,他们总是使用性质public (相对于private领域)。

我只当我需要尽可能最佳的性能(如连续访问值万次)暴露领域。

因此,要总结

属性(get /套)以上领域的优势:

  • 能够无需重新编译引用该组件后面添加代码。
  • 有能力提供私人/保护/内部设定和公众获取(或任何其他组合)。
  • 公共领域是不符合CLS 。

性能的缺点:

  • 较慢的访问(读取和写入)。
  • 不能通过作为ref方法的参数。


Answer 3:

请参见本乔恩斯基特教程或何时使用属性,而不是功能的就此事进行讨论。 还有关于这一主题,其中谷歌/ SE SEACH会暴露出一个十亿相关问题和资源。

我希望这有帮助。



Answer 4:

据对我来说,使用“GET-设置”将提供一个属性。 基本上要实现封装的概念,同时提供一开始设置属性的变量。



Answer 5:

想象一下,你有公共变量在一个类来存储数据。 但是,如果你需要做数据验证,您将无法在一类公共变量这样做。 因为你在他们身上没有控制权。 局外人,其他程序员,谁访问您的项目可能在类编辑这些公共变量。

主要是为了控制你的类访问数据,我们使用属性。 他们仍存变数,但你的类的权限范围内。 这些变量可以是从任何数据类型(例如,字符串,整数,布尔,对象,等)

属性可以使用三种主要的选项,根据什么/你要如何实现与财产impemented。

Get - access to the property and retrieve its value
Let - access to the property and update its value
Set - access to the property and used with objects 

这是至关重要的一个理解真正使用的get / set方法。 我Tigaran同意他的意见。

如果有人要我VODE下来,我想知道原因!



Answer 6:

我想你已经回答了你自己的问题。

对于简单的情况就是这样,有没有真正的优势。 通过使用速记属性创建自动get / set方法:

public int Foo { get; set; }

对于需要改造则更加复杂的例子,你可以灵活地改变使用明确的get和set方法的东西。



文章来源: what is the benefit of get set for simple variables [duplicate]
标签: c# get set