Почему ReSharper должен сканировать все файлы при преобразовании свойства в свойство auto? - PullRequest
8 голосов
/ 04 марта 2011

Есть ли какая-либо разница между доступом к свойству, имеющему поле поддержки

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

, и автоматическим свойством?

public int Id { get; set; }

Причина, по которой я спрашиваю:ReSharper преобразует свойство в автоматическое свойство, которое, по-видимому, сканирует все мое решение или, по крайней мере, все aspx-файлы.

Я не вижу никакой причины, почему между ними должны быть какие-то различия вне класса.Есть ли?

1 Ответ

12 голосов
/ 04 марта 2011

Компилятор автоматически создает вспомогательное поле для авто-свойств, поэтому нет, не должно быть никакой разницы.

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 должен сканировать все файлы, поскольку он не может знать, где может быть определен частичный класс.

...