using 为什么在OpenFileDialog 中是没有必要的呢

背景:之前写有关文件操作的都使用using来将其包住,今天突然发现using的时候在有些时候是非必要的。

之前老是这样子写

private void selectFileMethod(object obj)
{
    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        if (openFileDialog.ShowDialog() == true)
        {
            string selectedFilePath = openFileDialog.FileName;
            // 处理选中的文件路径
        }
    }
}

但是对这里的OpenFileDialog来说,是没有必要的

首先明确using的经常的使用场景是文本流,数据库连接,窗口句柄,图标,打印机资源,主要用于那些实现了 IDisposable 接口的对象。这样在块结束后自动调用Dispos方法,释放资源。但是这里的OpenFileDialog,没有实现IDisposable 接口,不持有任何显式释放的非托管资源。它的内存资源.NET会自动管理的,不需要手动释放。

比较常见的实现了IDisposable接口的类有

  1. 流(Stream)类:FileStream, MemoryStream等
  2. I/O类:BinaryReader, StreamReader等
  3. 数据库连接类:SqlConnection, OracleConnection等
  4. 图像处理类:Bitmap, Icon等
  5. 加密类:SymmetricAlgorithm, RSA等

补充:IDisposable 接口除了使用非托管资源类实现外,需要占用大量托管内存的类实现IDisposable 接口后,方便触发垃圾回收,减轻GC压力,图像就是这样。

你可能感兴趣的:(C#,c#)