我认为它是在.net 2.0中,微软推出了一个缩写为类似的访问器
public string Name { get; set; }
但是上面的代码之间是否有任何真正的区别,并且简单地说:
public string Name;
Run Code Online (Sandbox Code Playgroud)
主要区别在于,如果您以后需要在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运送给其他程序员(例如开源项目或作为组件供应商)时,这显然是一个更大的问题,而不是你只是为自己/雇主构建一个应用程序