7

C#にはVB6に相当するものがありますか

With 
End With
4

8 に答える 8

19

まったく同等のものはありませんが、C#3は構築時にプロパティを設定する機能を取得しました。

var person = new Person { Name = "Jon", Age = 34 };

そしてコレクション:

var people = new List<Person>
{
    new Person { Name = "Jon" },
    new Person { Name = "Holly"}
};

のすべての用途に代わるものではありませんが、With一部の用途については知っておく価値があります。

于 2010-11-29T15:33:41.530 に答える
14

C#には同等の構文はありません。最も近いのはオブジェクト初期化子ですが、同じではありません。

var obj = new SomeThing {
    Height = 100,
    Text = "Hello, World",
    ForeColor = System.Drawing.Color.Green
}
于 2010-11-29T15:33:09.190 に答える
6

いいえ。

近いのは、オブジェクトとリストの初期化子です。

Person p = new Person()
{
    FirstName = "John",
    LastName = "Doe",
    Address = new Address()
    {
        Street = "1234 St.",
        City = "Seattle"
    }
};
于 2010-11-29T15:34:53.747 に答える
4

それは決して同等ではありませんが、それがあなたが減らしようとしているタイピングであるならば、あなたはそうすることができます。

{
  var o = myReallyReallyReallyReallyLongObjectName;
  o.Property1 = 1;
  o.Property2 = 2;
  o.Property3 = 3;
}
于 2010-11-29T15:38:47.567 に答える
2

WithVisual Basicのキーワードに相当するC#はありません。

于 2010-11-29T15:34:38.923 に答える
1

ほぼ同等の1つは、クラスのメンバーであるメソッドを呼び出すことです。クラスメンバー内で所有オブジェクトに繰り返し名前を付ける必要はありません。これは、関数が特定のインスタンスに対して呼び出されるメンバーであるという事実に暗黙的に含まれています。

このため、C#ではWith /EndWithに直接相当するものが適切であるとは思えません。特定のスコープでオブジェクトの名前を何度も入力していることに気付いた場合は、問題のコードがそのオブジェクトのクラスで適切なメソッドを作成することを示しています。

于 2010-11-29T15:34:04.980 に答える
1

直接同等のものはありません。他の人が説明しているように、構築時にプロパティを設定することも、式を短い名前の変数に割り当てることもできます。以下は意味的に同等である必要があります。

With <expression>
    .something ...
    .somethingElse ...
End With

var w = <expression>;
w.something ...
w.somethingElse ...
于 2010-11-29T15:36:03.153 に答える