2

与えられたオブジェクト初期化子:

Foo foo = new Foo{ Name = "Jhon", Value = 2, IsMale = true };

それらは何らかの形で他の場所で使用できますか?(オブジェクト構築の外)

foo.Name = "Name";
foo.Value = 5;
...
foo.DoSth();

次のようなものを使用するには:

Name = "Name";
Value = 5;
...
DoSth();

これが foo のクラス階層の外にあるとします。これは、1 つのオブジェクトのメンバーを何度も使用する場所を避けるためです。

たとえば、VB/GML (GameMaker のスクリプト言語) では、次を使用できます。

with(foo)
{
    Name = "Name";
    Value = 5;
    ...
    DoSth();
}

foo.something の代わりに

だから、C#でこのようなものはありますか?

4

1 に答える 1

1

いいえ、オブジェクト初期化子は、そのような代入構文を使用できる唯一の場所です。コード内のさまざまな場所から一度に複数のフィールドを重複なく割り当てる必要がある場合は、すべての割り当てをカプセル化するメソッドを定義できます。

void SetNameAndGender(string f, string l, bool isMale) {
    FirstName = f;
    LastName = l;
    IsMale = isMale;
}

残念ながら、表示されている VB 構文のように、プロパティの任意のグループを設定することはできません。

于 2013-06-01T17:29:55.067 に答える