在C#中使用语句而不实现Dispose方法

 长颈己 发布于 2023-02-12 18:23

我试图理解在C#中使用块.我可以在Using语句中创建一个自定义对象,如下所示,它不实现IDisposable接口吗?

Class A
{
}

using(A a = new A())
{
}

它给出了错误,说"错误1'ConsoleApplication1.A':在using语句中使用的类型必须可以隐式转换为'System.IDisposable'"

如何更正此错误?我不想做A类:IDisposable

还有其他方法吗?或者强制要求我们需要在这些使用块内部使用的自定义对象中实现IDisposable Dispose方法?

编辑:我不期望MSDN和数千个网站中的定义.我只是想了解这个错误以及整改

1 个回答
  • 使用块是语法糖,仅适用于IDisposable对象.

    以下使用声明:

    using (A a = new A()) {
    // do stuff
    }
    

    语法糖是:

    A a = null;
    
    try {
      a = new A();
      // do stuff
    } 
    finally {
      if (!Object.ReferenceEquals(null, a))  
        a.Dispose();
    }
    

    2023-02-12 18:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有