using
C# にはキーワードがあることは知っていusing
ますが、オブジェクトは自動的に破棄されます。
Visual Basic 6.0と同等のものはありWith...End With
ますか?
using
C# にはキーワードがあることは知っていusing
ますが、オブジェクトは自動的に破棄されます。
Visual Basic 6.0と同等のものはありWith...End With
ますか?
同等ではありませんが、この構文は機能しますか?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
C# には、これに相当する言語構造がありません。
同等のものはありませんが、構文について議論するのは面白いかもしれません!
私はとても好きです。
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 6.0 / VB.NETの機能です。