最新要闻

广告

手机

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注

家电

再次认识using 天天报资讯

来源:博客园


【资料图】

今天看了同事代码,发现using新的语法糖。顿时来了兴趣,赶紧找文档看看,看看更新了那些东西

基础用法确保正确使用可释放对象

class Program    {        static async Task Main()        {            /*             *  我们使用 using 语句创建了一个 MyClass 的实例,并在 using 代码块中使用它。             *  当程序执行到 using 代码块的结束处时,无论是否发生异常,都会自动调用 MyClass 的 Dispose() 方法进行资源的释放。             */            using (MyClass myclass = new MyClass())            {                Console.WriteLine("内部");            }            Console.WriteLine("外部");            Console.ReadLine();        }    }    public class MyClass : IDisposable    {        public MyClass()        {            Console.WriteLine("实例化");        }        public void Dispose()        {            Console.WriteLine("Dispose");        }    }

发生异常也会调用 Dispose() 方法进行资源的释放。

using 语句中声明多个相同类型的实例

还可以使用不需要大括号的 using 声明

在using 声明中进行声明时,局部变量在声明它的作用域末尾释放。

异步环境中销毁对象

class Program    {        static async Task Main()        {            await using (var myClass = new MyClass())            {                // 使用资源                Console.WriteLine("里面");                await Task.Delay(2000);            }            Console.WriteLine("外面");            Console.ReadLine();        }    }    public class MyClass : IAsyncDisposable    {        public MyClass()        {            Console.WriteLine("MyClass-实例化");        }        public async ValueTask DisposeAsync()        {            // 异步释放资源的逻辑            await Task.Delay(1000);            Console.WriteLine("MyClass-DisposeAsync");        }    }

关键词: