C# の「With…End With」に相当しますか?[重複]
-
21-08-2019 - |
質問
この質問にはすでに答えがあります:
- C# で同等のブロックを使用しますか? 15 件の回答
C# には using
キーワードですが、 using
オブジェクトを自動的に破棄します。
同等のものはありますか With...End With
で Visual Basic 6.0?
解決
C#はそのための同等の言語構造を持っていません。
他のヒント
それは同じではないのですが、この構文の仕事はあなたのためでしょうか?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
同等のものはありませんが、構文について議論するのは興味深いかもしれません。
とても気に入っています。
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
他に何か提案はありますか?
この言語機能を追加するのが難しいとは想像できませんが、基本的には単なる前処理です。
編集:
この機能を待つのはうんざりだったので、同様の動作を実現する拡張機能をここに示します。
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
使用法;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
編集: 興味深いことに、この「解決策」でまた誰かが私を徹底的に打ちのめしたようです。しかたがない..
私が思うのと同等以下の VB の
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
これはをC#のあることか
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
唯一の本当の違いは、VBで、識別子は名前「q」を持っていないということですが、単に期間は、その前に他の識別子なしに遭遇したときに使用されるデフォルトの識別子です。
とに相当するものはありません... C#の中で終了します。
は同等の構造は、C#ではありません。これは、Visual Basic 6.0 / VB.NET の機能です。
所属していません StackOverflow