誰かがC#でusingステートメントのように機能するメカニズムを実装する方法を考えることができるのだろうかと思っていましたが、より洗練された構文です。C#のステートメントを使用してオブジェクトを自動的に処理する別の構文はありますか?
C++/CLRでは、
MyClass NewObject;
MyClass
がここにマネージクラスで書くことができます。変数が範囲外になるとすぐにDispose
が呼び出されます。本質的には、同じことをC#はusing
と同じですが、より良い方法で行います。代わりに
using (MyClass NewObject1=new MyClass())
{
xxxx;
using (MyClass NewObject2=new MyClass()
{
}
}
(私はこれは非常にきれいに見えない、それはすべての新しい変数のための新しいブロックを開くためにも退屈だと思う)
を書くの私はこのようなものを好むので
、 :
autodispose MyClass NewObject1=new MyClass();
xxxx;
autodispose MyClass NewObject2=new MyClass();
誰もこのようなものを実装することは可能でしょうか? AOPやコード契約のフレームワークはコードを挿入するメカニズムを使用しているようですが、どうやってそれを行うのかはわかりません。
'using'はまだ代替(' try'/'finally'、blech)よりもクリーンです –
' MyClass'が 'IDisposable'を実装していない管理クラスの場合はどうなりますか? – phoog
あなたはあなたの好みで(少なくともさらに装飾をしなくても)失う「使用する」というスコープを手に入れます。 –