访问具有支持字段的属性之间有什么区别吗
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
与自动属性相比?
public int Id { get; set; }
我问的原因是,当让 ReSharper 将属性转换为自动属性时,它似乎会扫描我的整个解决方案,或者至少扫描所有 aspx 文件。
我看不出有任何理由说明两者在课外应该有任何区别。有吗?
最佳答案
编译器自动生成自动属性的支持字段,所以不,应该没有任何区别。
ReSharper 正在扫描所有文件,因为如果您定义了一个 Partial
类,它可能会使用支持字段而不是公共(public)属性,即使代码存在于物理上不同的文件中。
例如:
// MyClass.cs
public partial class MyClass
{
int _id;
public int ID { get { return _id; } set { _id = value; } }
public MyClass(int identifier)
{
ID = identifier;
}
}
// MyClass2.cs
public partial class MyClass
{
public void ChangeID(int newID)
{
_id = newID;
}
}
ReSharper 必须扫描所有文件,因为它无法知道分部类的定义位置。
关于c# - 为什么 ReSharper 在将属性转换为自动属性时需要扫描所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196943/