为什么ReSharper在将属性转换为自动属性时需要扫描所有文件?

mfl*_*din 8 .net c# asp.net resharper automatic-properties

访问具有支持字段的属性之间是否有任何区别

    private int _id;
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
Run Code Online (Sandbox Code Playgroud)

与自动财产?

public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

我看不出有什么理由说为什么两人在课外都应该有任何区别.在那儿?

Nat*_*ate 12

编译器会自动为自动属性生成支持字段,所以不,不应该有任何区别.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

ReSharper必须扫描所有文件,因为它无法知道可能在哪里定义部分类.