不,这不是关于为什么我们应该在C#中使用属性的另一个问题:)我想知道两者之间的主要区别是什么
private string _name;
public string Name {
get { return _name; }
set { _name = value; }
}
和
public string Name { get; set; }
我知道随着.NET 3.0的引入,您可以使用后者,但是我仍然可以找到使用前者的代码段。
我很想知道两者之间在性能(除了我浪费了两倍的空间),样式以及基础实现方式方面有什么区别(如果有)。
我也想知道您的意见以及您在代码中使用的意见。
谢谢您,祝您编程愉快!
最佳答案
我知道随着.NET 3.0的引入,您可以使用后者
不,它是C#3的引入。您可以将.NET 2作为目标,仍然使用自动实现的属性。区分使用的C#版本和目标的.NET版本非常重要。
但是,您使用的两个代码段之间没有显着差异,除了使用自动实现的属性时,没有其他源代码可以访问该字段。该字段被赋予一个“无法说出的名字”(在IL中有效,但在C#中无效)。 (当您使用自动实现的属性时,编译器也将[CompilerGenerated]
属性应用于该属性,但这很少重要。)
时间或内存上都没有性能差异。
关于c# - C#属性用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16757433/