28

usingC# にはキーワードがあることは知っていusingますが、オブジェクトは自動的に破棄されます。

Visual Basic 6.0と同等のものはありWith...End Withますか?

4

6 に答える 6

38

同等ではありませんが、この構文は機能しますか?

Animal a = new Animal()
{
    SpeciesName = "Lion",
    IsHairy = true,
    NumberOfLegs = 4
};
于 2009-06-30T12:46:04.320 に答える
35

C# には、これに相当する言語構造がありません。

于 2009-06-30T12:40:15.050 に答える
22

同等のものはありませんが、構文について議論するのは面白いかもしれません!

私はとても好きです。

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..
});

編集:興味深いことに、誰かがこの「解決策」で私を打ち負かしたようです。しかたがない..

于 2011-05-11T13:13:40.003 に答える
9

次のVBと同等だと思います:

With SomeObjectExpression()
  .SomeProperty = 5
  .SomeOtherProperty = "Hello"
End With

これはC#でしょう:

{
  Var q=SomeOtherExpression();
  q.SomeProperty = 5;
  q.SomeOtherProperty = "Hello";
}

唯一の実際の違いは、vb では識別子に "q" という名前がなく、ピリオドの前に他の識別子がない場合に使用されるデフォルトの識別子にすぎないことです。

于 2010-10-29T15:22:28.867 に答える
7

C#の With ... End With に相当するものはありません。

Visual Basic と C# の違いを示す比較表を次に示します。

于 2009-06-30T12:41:09.993 に答える
3

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

于 2009-06-30T12:41:13.020 に答える