2013-11-09 269 views
4

的区别是什么,如果有的话,(重复)'public int x'之间的区别和'public int x {get;组; }

public int x { get; set; } 

之间

public int x; 

+1

第一个是公共变量,而第二个是公共财产。 –

+3

如果只有一个网站,您可以搜索这样的东西,如 我不知道,谷歌? https://www.google.co.il/search?q=difference+between+properties+and+variables+c%23&oq=difference+between+properties+and+variabl&aqs=chrome.2.69i57j0l5.11837j0j8&sourceid=chrome&espv=210&es_sm = 122&ie = UTF-8#es_sm = 122&espv = 210&q =属性+ vs +变量+ c%23 –

+3

在这种情况下,他对谷歌没有任何东西。他不知道这是一个“财产”。因此,他究竟能够在Google搜索中投入什么?我认为这是一个公平的问题... –

回答

5

第一个被称为字段。第二个是财产,在这种情况下,自动执行的财产

属性的作用类似于字段,但使用getter和setter函数来检索和设置值。写入上述属性的另一种方式如下:

private int _x; 
public int X 
{ 
    get 
    { 
     return _x; 
    } 
    set 
    { 
     _x = value; 
    } 
} 

在这种情况下,可变_x称为支持字段。使用自动实现的属性,您无法访问后台字段或自定义getter/setter中的代码,但如果不需要,则不会比简短和简洁。

作为C#中的一个规则,大多数时候任何公共成员都应该暴露为属性而不是字段。

0

第一个是公共变量,可以从任何地方访问。

第二个是公共财产

检查属性tutorial了解详情。

属性有很多用途:它们可以在允许更改 之前验证数据;他们可以透明地公开某个类的数据,其中该数据实际上是从其他某个源(如数据库)中检索的;他们 可以在数据发生变化时采取行动,例如引发事件,或者 更改其他字段的值。

0

这两者之间的区别是,一个属性可以做些事情更多不只是获取/设置变量。
借此例如:

private int _x; 
public int x 
{ 
    get 
    { 
     //do something 
     return _x; 
    } 
    set 
    { 
     if(_x != value) 
     PropertyChanged("x"); 
     _X = value; 
    } 
} 

,当我们设置属性 - 我们通知的东西(PropertyChanged()),该值已更改。这将是很难做的只是领域

+0

是的,但给定了确切的代码,没有任何附加的功能,如事件或值检查,是否有任何实际的区别?换句话说,为什么在公共属性后键入{get set}如果你所做的都是直接获取X的值? – Kokodoko

+0

我从来没有输入'get;组;' :-)我输入'prop'并按Tab键。而且,如果我以后需要添加功能性,那么我就准备好了。 –

相关问题