⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 C#开发教程 由浅入深 配有实例 是初学者的好帮手
💻 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 + -