public struct S : IDisposable
{
private bool dispose;
public void Dispose()
{
dispose = true;
}
public bool GetDispose()
{
return dispose;
}
}
下面的示例将输出:false false
var s = new S();
using (s)
{
Console.WriteLine(s.GetDispose());
}
Console.WriteLine(s.GetDispose());
为什么第二次出来false,是因为Dispose()调用了方法?谢谢你。
Lippert有一篇关于此主题的好文章。
具体来说,你的问题的答案是:
实际上将被执行为
由于结构是按值而不是按引用复制的,因此所有操作都将在副本上执行,而不是在原始实例上执行。并将
Dispose应用于副本。