web-dev-qa-db-ja.com

状態とフィールドの違いは何ですか?

状態はフィールドの別の名前ですか、それとも何か違うのですか?

例えば:

private int telNumber;

telNumberについて、それが状態であるか、フィールドであると言えますか?

2
Lamaasi

次のクラスがあるとしましょう。

public class Foo
{
    private int _bar;
    private string _baz;

    public Foo(int bar, string baz)
    {
        _bar = bar;
        _baz = baz;
    }

    public void ChangeBar(int newBar)
    {
        _bar = newBar;
    }
}

次のようなクラスのインスタンスを作成できます。

var myFoo = new Foo(3, "Qux");

_ barと_bazのは、まとめてmyFooの状態を形成します。

_barを次のように変更すると、次のようになります。

myFoo.ChangeBar(6);

1つ以上のフィールドが変更されたため、myFoostateが変更されたことを意味します。

6
Robert Harvey

素人の言葉で:

  • いいえ。Stateはフィールドの別名ではありません。
  • オブジェクトの状態は、そのすべてのフィールドの値の組み合わせです。
  • フィールドが変更された場合、オブジェクトの状態(全体)が変更されたと見なされます。
2