-1

独自の using() タグ内で変数を再インスタンス化する必要がある場合、その動作はどのようなものでしょうか (定義されている場合)。

これには実際のユース ケースがあります。SharpDX を使用して、レンダー ループの外側で宣言したい変数があります (各フレームに使用)。理想的にはこのようにラップします。using(thevariable){MainLoop{}}; ただし、何かが発生した場合 (ユーザーのサイズ変更)、その変数が破棄して再初期化します。サンプルでは、​​null に初期化されており、必要に応じてループ内で再初期化され、再破棄され、ループの後に再び破棄されています。次のようなコードの動作:

void Main()
{
    using(var MyDisposable = new MyDisposable())
    {
        If(SomeCondition)
        {
             MyDisposable.Dispose() // Do i need to call this? Or is it auto called thanks to using when leaving the block? What will using call dispose on, the object that MyDisposable refers to, or the one it refered to back when i called the using statement?
             MyDisposable = new MyDisposable(); // Is this going to be managed by the using block? Is this even valid?
        }
    }
}

また、時間の経過とともに動作が変化したかどうかはわかりませんが、そうではないと想定していますが、そうであれば.net 4.5の回答に興味があります

4

1 に答える 1

2

これによりコンパイラエラーが発生することがわかると思います..具体的には:

「使用変数」であるため、「MyDisposable」に割り当てることはできません

したがって、あなたの質問に対する答えは次のとおりです。この場合、何も起こりません。あなたのコードはコンパイルされません。

于 2013-10-15T04:28:08.860 に答える