C#にはVB6に相当するものがありますか
With
End With
まったく同等のものはありませんが、C#3は構築時にプロパティを設定する機能を取得しました。
var person = new Person { Name = "Jon", Age = 34 };
そしてコレクション:
var people = new List<Person>
{
new Person { Name = "Jon" },
new Person { Name = "Holly"}
};
のすべての用途に代わるものではありませんが、With
一部の用途については知っておく価値があります。
C#には同等の構文はありません。最も近いのはオブジェクト初期化子ですが、同じではありません。
var obj = new SomeThing {
Height = 100,
Text = "Hello, World",
ForeColor = System.Drawing.Color.Green
}
いいえ。
近いのは、オブジェクトとリストの初期化子です。
Person p = new Person()
{
FirstName = "John",
LastName = "Doe",
Address = new Address()
{
Street = "1234 St.",
City = "Seattle"
}
};
それは決して同等ではありませんが、それがあなたが減らしようとしているタイピングであるならば、あなたはそうすることができます。
{
var o = myReallyReallyReallyReallyLongObjectName;
o.Property1 = 1;
o.Property2 = 2;
o.Property3 = 3;
}
With
Visual Basicのキーワードに相当するC#はありません。
c#に相当するものはありません->コメントhttp://blogs.msdn.com/b/csharpfaq/archive/2004/03/11/why-doesn-tc-have-vb-net-s-で詳細を読むwith-operator.aspx
ほぼ同等の1つは、クラスのメンバーであるメソッドを呼び出すことです。クラスメンバー内で所有オブジェクトに繰り返し名前を付ける必要はありません。これは、関数が特定のインスタンスに対して呼び出されるメンバーであるという事実に暗黙的に含まれています。
このため、C#ではWith /EndWithに直接相当するものが適切であるとは思えません。特定のスコープでオブジェクトの名前を何度も入力していることに気付いた場合は、問題のコードがそのオブジェクトのクラスで適切なメソッドを作成することを示しています。
直接同等のものはありません。他の人が説明しているように、構築時にプロパティを設定することも、式を短い名前の変数に割り当てることもできます。以下は意味的に同等である必要があります。
With <expression>
.something ...
.somethingElse ...
End With
var w = <expression>;
w.something ...
w.somethingElse ...