8

バッキング フィールドを持つプロパティへのアクセスに違いはありますか

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

対自動プロパティ?

public int Id { get; set; }

私が尋ねている理由は、ReSharper にプロパティを自動プロパティに変換させると、ソリューション全体、または少なくともすべての aspx ファイルがスキャンされるように見えるからです。

クラスの外から2つに違いがあるべき理由がわかりません。ある?

4

1 に答える 1

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;
    }
}

ReSharperは、部分的なクラスが定義されている可能性がある場所を知る方法がないため、すべてのファイルをスキャンする必要があります。

于 2011-03-04T17:12:19.963 に答える