26

ゲッターとセッターの作成方法を理解しています

public myClass
{
    public int myVal { get; set; }

    // more stuff
}

しかし、後で呼び出す方法がわかりません。

public myOtherClass
{
    public myOtherClass()
    {
         myClass localMyClass = new myClass();

         localMyClass.???set??? = 42;  
         // Intelisense doesn't seem to give any obvious options after I enter 
         // the period.
    }
}

localMyClass で myVal の値を設定するにはどうすればよいですか?

4

5 に答える 5

24
localMyClass.myVal = 42;

ゲッターとセッターを使用すると、値をパブリック プロパティのように扱うことができます。違いは、取得と設定を行う関数内でやりたいことが何でもできることです。

例:

他の変数を保存する

private int _myVal, myOtherVal;
public int MyVal { get; set { _myVal = value; myOtherVal++; } }

数字を作る / 定数を返す

public int MyVal { get { return 99; } set; }

セッターを捨てる

private int _myVal;
public int MyVal { get { return _myVal; } set { ; } }

これらのケースのそれぞれで、ユーザーは単なるパブリック データ メンバーのように感じ、単純に次のように入力します。

localMyClass.myVal = 42;
int i = localMyClass.myVal;

ゲッターとセッターを使用すると、独自の実装を作成できます。また、Hogan が言うように、「ゲッター関数とセッター関数を使用する必要があるライブラリとアドオン [MVC.NET など] が多数あります」 - 些細な{get; set;}場合であっても。

于 2013-03-13T04:12:04.157 に答える
11

設定:

localMyClass.myVal = 42

得る:

int variable = localMyClass.myVal;
于 2013-03-13T04:04:48.023 に答える
6

外から見ると、getter と setter にアクセスするための構文は、変数にアクセスするための構文と区別がつきません。割り当てはセッターの呼び出しに変換されますが、単純な式の使用はゲッターの呼び出しに変換されます。

インテリセンスでは.、変数名の後にドットを配置すると、ゲッターとセッターのリストが開きます。プロパティの左側には青色のマーカーが必要です (メソッドの左側にあるマゼンタ色のマーカーとは対照的に)。

于 2013-03-13T04:05:45.780 に答える
5

あなたはこれを求めている

localMyClass.myVal = 42;  

セッターを呼び出す

この

varName = localMyClass.myVal;

ゲッターを呼び出す。

于 2013-03-13T04:04:52.223 に答える
2

得る:var tmp = localMyClass.myVal;

設定:localMyClass.myVal = 2;

于 2013-03-13T04:04:49.407 に答える