可能重复:
公共字段与自动属性
我想这将是某处回答,但我不会在老地方找到它。 我想知道,什么是这样做的好处
private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}
要么
public int foo {get; set;}
经过短短
public int foo;
我可以看到惠若需要更多复杂的操作,但什么是一个简单的情况下,这样的好处呢?
可能重复:
公共字段与自动属性
我想这将是某处回答,但我不会在老地方找到它。 我想知道,什么是这样做的好处
private int _foo;
public int foo {get {return _foo;} set{_foo = value;}}
要么
public int foo {get; set;}
经过短短
public int foo;
我可以看到惠若需要更多复杂的操作,但什么是一个简单的情况下,这样的好处呢?
这个问题在这里问了很多次。 没有明确的证据表明受益FO 这些情况下(内财产没有逻辑)。 会说更多的,是使用现场,你得到一些最小的(纳米)速度优势,但99.99%的情况下,不相关的。
通过MS定义的指导方针 建议使用properties
,为您的代码的expandibility和maintanability。 所以,下面该准则能够更方便工作,为别人,不熟悉的代码来阅读它。
其实,所有的准则是有关创建可重用的库。 在那里,当你创建一个property
(使用的get / set),你还可以创建是当有人获取或设置值(如添加验证等)不改变代码的外部定义执行的机会,以后再添加代码(从而不需要重新编译其他库)。 但这种没有价值,如果你总是重新编译整个解决方案,没有人其他人使用该库。
从使用属性的另一个好处是,你可以限制谁可以获取或设置的值。 例如,每个人都可以得到的价值,但只有派生类可以将其设置( protected
)。
这就是说,它仍是推荐时,他们总是使用性质public
(相对于private
领域)。
我只当我需要尽可能最佳的性能(如连续访问值万次)暴露领域。
因此,要总结
属性(get /套)以上领域的优势:
性能的缺点:
ref
方法的参数。 请参见本乔恩斯基特教程或何时使用属性,而不是功能的就此事进行讨论。 还有关于这一主题,其中谷歌/ SE SEACH会暴露出一个十亿相关问题和资源。
我希望这有帮助。
据对我来说,使用“GET-设置”将提供一个属性。 基本上要实现封装的概念,同时提供一开始设置属性的变量。
想象一下,你有公共变量在一个类来存储数据。 但是,如果你需要做数据验证,您将无法在一类公共变量这样做。 因为你在他们身上没有控制权。 局外人,其他程序员,谁访问您的项目可能在类编辑这些公共变量。
主要是为了控制你的类访问数据,我们使用属性。 他们仍存变数,但你的类的权限范围内。 这些变量可以是从任何数据类型(例如,字符串,整数,布尔,对象,等)
属性可以使用三种主要的选项,根据什么/你要如何实现与财产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下来,我想知道原因!
我想你已经回答了你自己的问题。
对于简单的情况就是这样,有没有真正的优势。 通过使用速记属性创建自动get / set方法:
public int Foo { get; set; }
对于需要改造则更加复杂的例子,你可以灵活地改变使用明确的get和set方法的东西。