質問

この質問にはすでに答えがあります:

C# には using キーワードですが、 using オブジェクトを自動的に破棄します。

同等のものはありますか With...End WithVisual 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#の中で終了します。

ここでの Visual BasicとC#の違いを示してあなたのための比較チャートに。

は同等の構造は、C#ではありません。これは、Visual Basic 6.0 / VB.NET の機能です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top