私は、このコンソールアプリケーション(.NET Frameworkの4.5.2)している:Dispose
方法はusingステートメントでもDisposeが呼び出されないのはなぜですか?
class Program
{
static void Main(string[] args)
{
using (var result = new Result())
{
result.Test();
}
}
}
public class Result : IDisposable
{
public void Test()
{
int a = 1;
int b = 1/(a - 1);
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
と呼ばれていないのはなぜ? DivideByZero
-exception後にブレークポイントがDispose
にヒットせず、コンソールに出力されません(アプリケーションが終了しているため)。 MSドキュメントあたりとして
どういう意味ですか? Disposeメソッドを直接呼び出すことはありませんでした。代わりにTestメソッドを呼び出しました。 – jLaw
@jLawしかし、彼は結果を 'using'でラップしました –
@jLawオブジェクトが' using'節にあるので、オブジェクトは節の末尾に配置されると期待するかもしれません。 –