1. ホーム
  2. c#

[解決済み] フィールドとプロパティの違いは何ですか?

2022-03-16 14:19:11

質問

C#では、フィールドはプロパティと何が違うのでしょうか。また、プロパティの代わりにフィールドを使用するのはどのような場合でしょうか。

どのように解決するのですか?

プロパティはフィールドを公開します。 フィールドは(ほとんど常に)クラスのプライベートに保たれ、getとsetプロパティでアクセスされるべきです。 プロパティは抽象化されたレベルを提供し、クラスを使用するものによってアクセスされる外部方法に影響を与えずに、フィールドを変更することができます。

public class MyClass
{
    // this is a field.  It is private to your class and stores the actual data.
    private string _myField;

    // this is a property. When accessed it uses the underlying field,
    // but only exposes the contract, which will not be affected by the underlying field
    public string MyProperty
    {
        get
        {
            return _myField;
        }
        set
        {
            _myField = value;
        }
    }

    // This is an AutoProperty (C# 3.0 and higher) - which is a shorthand syntax
    // used to generate a private field for you
    public int AnotherProperty { get; set; } 
}

プロパティはフィールドをカプセル化する必要はなく、他のフィールドに対して計算を行ったり、他の目的に使用することも可能であると @Kent は指摘しています。

GSS は、プロパティにアクセスしたときに、バリデーションなどの他のロジックを実行することもできると指摘しています。