📄 class1.cs
字号:
using System;
namespace DoubleDispose
{
public class Thing : IDisposable
{
private string name;
public Thing(string name) { this.name = name; }
override public string ToString() { return name; }
~Thing()
{
Dispose();
Console.WriteLine("~Thing()");
}
private bool AlreadyDisposed = false;
public void Dispose()
{
if (!AlreadyDisposed)
{
AlreadyDisposed = true;
Console.WriteLine("Dispose()");
GC.SuppressFinalize(this);
}
}
public void Bar()
{
if (AlreadyDisposed)
{
throw new ObjectDisposedException("Thing");
}
}
}
public class DoubleDisposeApp
{
[STAThread]
public static void Main(string[] args)
{
Thing t = new Thing("Foo");
Console.WriteLine(t);
t.Dispose();
t.Dispose();
GC.Collect();
GC.WaitForPendingFinalizers();
try
{
t.Bar();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -