c# - C#中使用[using]语句好还是[dispose]方法好?这是否适用于外部 (COM) 对象?

标签 c# .net com dispose using-statement

在处理完一个对象时,using 指令和 dispose 指令哪个更好?

 using(FileStream fileStream = new FileStream(
            "logs/myapp.log",
            FileMode.Open,
            FileAccess.Read,
            FileShare.ReadWrite))
        {
            using(StreamReader streamReader = new StreamReader(fileStream))
            {
                this.textBoxLogs.Text = streamReader.ReadToEnd();
            }
        }

另一方面,当我处理 System.Net.Mail 时,我被告知我需要对该对象执行 Dispose() 以释放任何杂散锁。

是否有任何一致的指导?我如何判断在给定对象的给定情况下什么更合适?

最佳答案

using 语句(非指令)涉及在 finally block 中对 Dispose() 的隐式调用。所以这里并不矛盾。你能链接到那个讨论吗?


的官方定义 使用 (x) { ... }

try ... finally if (x != null) x.Dispose(); }

What is better?

从符号的角度来看,using() { } block 。从技术上讲,它们是相同的。

关于c# - C#中使用[using]语句好还是[dispose]方法好?这是否适用于外部 (COM) 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3560921/

相关文章:

c# - Telerik_Web_UI_WebResource_axd 问题

c# - 如何在 C# Compact Framework 中获取 exe 应用程序名称和版本

c# - 直接从内存处理C#中的内存映射文件

c# - 为什么在 VS 2010 和 VS 2005 中编译客户端时 COM 互操作层会慢 40 倍?

c# - 在 C# 中使用相同的 COM 接口(interface)在 2 个不同的库之间进行转换

c++ - 如何正确地将 _bstr_t 重置为 `NULL`

c# - 使用VS14构建Monodevelop时出错

c# - 流畅的nhibernate Cascade创建新记录而不是更新它们

c# - 自动化 SQL 引用和换行

.net - 如何在 LINQ 中的子表上创建 where 条件