2012-02-28 11 views
5

可能性の重複: Equivalence of “With…End With” in C#?C#にVB.NETの "With"ステートメントがありますか?

この質問は前に頼まれたと私はVB.NETの大ファンではないのであれば、私は知りません。しかし、私がC#で紛失している構文の1つは、Withの構文です。

VB.NETでは次のように記述することができます:私は同じことをやっている見逃しているC#での構文は

Dim sb As New StringBuilder 
With sb 
    .Append("foo") 
    .Append("bar") 
    .Append("zap") 
End With 

ありますか?

+0

'sb.Append(" foo ")'の代わりにそれを書く方がずっといいですね??私はVB.NETで12年間プログラミングしており、withステートメントの利点を理解したことはありません。あなたは毎回ルックアップする必要があるもう一つのこと(それは何ですか?) –

+0

@TimSchmelter:私は同じことを思い出します。私はおそらく最後の4年間のVB.NETでコード化し、With ... Newを除いてWithステートメントの使用を発見したことはありません。 –

答えて

11

いいえ、ありません。

これは、利便性があまり高くなく、混乱しやすいコードを記述するのに役立ちますので、意図的にC#から除外されました。キーワードの約スコットWiltamuthは、Visual C#のためのグループプログラムマネージャ、から

ブログポスト:StringBuilderの特殊なケースではhttp://msdn.microsoft.com/en-us/vstudio/aa336816.aspx

、することができますチェーンのコール:そこにISN

StringBuilder sb = new StringBuilder() 
    .Append("foo") 
    .Append("bar") 
    .Append("zap"); 
+2

ちょうど好奇心から、With/End Withを使用する混乱しているVB.Netコードの例を教えてください。 – ken2k

+0

C#にはオブジェクトイニシャライザの構文がありますが、関数呼び出しを行わずにpublicインスタンス変数を設定するためにのみ使用できます。 –

2

いいえ、同等の構文はありません。

Withは、VB/VB.NETのみです。

0

't - これはVisual Basicのみです。

C#から除外された主な理由の1つは、たとえば入れ子になったWithステートメントを使用すると、混乱するコードにつながる可能性があるということでした。

+0

リンクが壊れているようです。 –

+0

リンクが(効果的に)壊れているように見えます。リンクが非特定のページにリダイレクトされています。 –

4

VB Withステートメントと直接的な類似点はありません。しかし

、次のコードは、あなたのオリジナルと同等になるようStringBuilder.Appendは、StringBuilderインスタンスを返すことに注意してください:

sb.Append("foo").Append("bar").Append("zap"); 

あるいは

sb.Append("foo") 
    .Append("bar") 
    .Append("zap"); 

をこれは、すべてのオブジェクト/メソッドのために可能ではありません、しかし、。ではなく、共通のWithため、

var obj = new Type { 
    PropName = Value, 
    PropName = Value 
}; 

2

New Type Withの等価があります。

関連する問題