公共访问者.net

max*_*axp 6 c#

我认为它是在.net 2.0中,微软推出了一个缩写为类似的访问器

public string Name { get; set; }

但是上面的代码之间是否有任何真正的区别,并且简单地说:

public string Name;
Run Code Online (Sandbox Code Playgroud)

Rob*_*sor 6

主要区别在于,如果您以后需要在getter或setter中添加逻辑,而其他DLL已经针对您的编译,则可以轻松更改

public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

public string Name { get{/*special code*/} set{/*special code*/} }
Run Code Online (Sandbox Code Playgroud)

并且发布新DLL并且不会重新编译其他DLL也不会是一个重大变化.


如果你改变了

public string Name;
Run Code Online (Sandbox Code Playgroud)

public string Name { get{/*special code*/} set{/*special code*/} } 
Run Code Online (Sandbox Code Playgroud)

然后你需要确保使用你的任何DLL都被重新编译,因为它们从访问字段变为访问属性.

当你将DLL运送给其他程序员(例如开源项目或作为组件供应商)时,这显然是一个更大的问题,而不是你只是为自己/雇主构建一个应用程序

  • 作为区别的一个示例:您可以将某个字段用作某个方法的"out"或"ref"参数,但不能对某个属性执行此操作.因此,如果将其更改为属性,那么使用该方式的代码将会中断. (2认同)