C#属性用法

Edo*_*ici 2 c# implementation coding-style properties

不,这不是另一个问题,为什么我们应该在C#中使用属性:)我想知道它们之间的主要区别是什么

private string _name;
public string Name  {
    get { return _name; }
    set { _name = value; } 
}
Run Code Online (Sandbox Code Playgroud)

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

我知道随着.NET 3.0的引入,您可以使用后者,但我仍然可以找到使用前者的代码片段.

我很想知道它们在性能上的差异(如果有的话)(除了我浪费两倍的空间这一事实),风格以及底层实现的工作原理.

我想知道你的意见是什么,你在代码中使用了哪一个.

谢谢你,快乐的编码!

Jon*_*eet 9

我知道随着.NET 3.0的引入,你可以使用后者

不,这是引入C#3.您可以使用.NET 2并仍然使用自动实现的属性.区分您正在使用的C#版本和您要定位的.NET版本非常重要.

但是,您使用的两个片段之间没有显着差异,除了使用自动实现的属性时,没有其他源代码可以访问该字段.该字段被赋予"无法形容的名称"(一个在IL中有效但在C#中无效).(当您使用自动实现属性时,编译器也会将[CompilerGenerated]属性应用于属性,但这很少重要.)

时间或内存都没有性能差异.