8

访问具有支持字段的属性之间有什么区别吗

    private int _id;
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }

与汽车财产相比?

public int Id { get; set; }

我问的原因是,当让 ReSharper 将属性转换为自动属性时,它似乎扫描了我的整个解决方案,或者至少扫描了所有 aspx 文件。

我看不出有什么理由可以从课外看出这两者之间应该有任何区别。有没有?

4

1 回答 1

12

编译器会自动为 Auto-Properties 生成支持字段,所以不,应该没有任何区别。

ReSharper 正在扫描所有文件,因为如果您Partial定义了一个类,即使代码存在于物理上不同的文件中,它也可能使用支持字段而不是公共属性。

例如:

// 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 必须扫描所有文件,因为它无法知道部分类可能在哪里定义。

于 2011-03-04T17:12:19.963 回答