21得票4回答
我该如何对终结器进行单元测试?

我有一个类,它是一个 IDisposable 对象的装饰器(我省略了它添加的内容),自己使用了一种常见的模式实现了 IDisposable。public class DisposableDecorator : IDisposable { private readonly IDispos...

20得票3回答
我需要关闭.NET服务引用客户端吗?

我想了解在使用完.NET服务引用客户端后是否有必要关闭它。几乎所有我在网上找到的示例似乎都没有关闭,但生成的客户端实现了IDisposable,因为它确实打开了与服务的连接,所以我的直觉告诉我在完成后需要关闭该连接。 这是我从 http://msdn.microsoft.com/en-us/...

20得票8回答
应该使用Dispose()还是Finalize()来删除临时文件?

我有一个使用临时文件(Path.GetTempFileName())的类,当它处于活动状态时会利用它们。我希望确保在我的程序关闭后,这些文件不会留在用户硬盘上占用空间。现在,我的类有一个Close()方法,它检查类使用的任何临时文件是否仍存在,并删除它们。 将这段代码放在Dispose()或...

19得票3回答
C# 值元组中包含可释放成员

假设我有一个名为foo的方法,它返回一个ValueTuple,其中一个成员是可处理的(disposable),例如(IDisposable, int)。 如何最好地确保在调用端正确处理返回的可处理对象? 我尝试了以下方法:using (var (disposable, number) = ...

19得票8回答
如何对使用`using`语句的方法进行单元测试?

如何为含有 using 语句的方法编写单元测试? 例如,假设我有一个名为Foo的方法。public bool Foo() { using (IMyDisposableClass client = new MyDisposableClass()) { retur...

19得票4回答
为什么使用“use”比使用“using”更好?

根据这个MSDN页面上的最后一句话,应该首选use而不是using。我在其他地方也听说过(例如,这个答案)。为什么呢?我知道use是后来才添加的,但是有什么区别吗?表面上看,using似乎更有用,因为你可以控制何时调用Dispose(),并且如果需要,你可以明确地忽略绑定值(例如,(fun _...

19得票6回答
处理SolidBrush和Pen很重要吗?

我最近在CodeProject上看到了这个VerticalLabel控件。 我注意到OnPaint方法创建了但没有释放Pen和SolidBrush对象。 这会有影响吗?如果有,如何证明可能引起的问题? 编辑 这不是关于IDisposable模式的一般性问题。我知道调用方通常应该在任何实...

19得票1回答
使用?.(null-conditional运算符)调用Dispose时出现CA2213警告

我正在实现 IDisposable接口,在我的Dispose()方法中,当调用其他托管资源的Dispose()方法时,我使用了?.操作符,代码如下: public void Dispose() { Dispose(true); GC.Suppres...

18得票4回答
C#中IntPtr的正确使用方法

我认为我理解了IntPtr的用法,但我并不确定。 我从MSDN上复制了IDisposable模式,只是想看看能得到什么东西,虽然大部分我都理解了,但我不知道如何正确地实现IntPtr,或者甚至理解它应该指向什么,或者引用什么。此外,我不知道如何将整数、字符串、字符、双精度等数据类型赋值或转换...

18得票2回答
当在'using'块内调用'return'时会发生什么?

如果我有一个像这样的using块的方法... public IEnumerable<Person> GetPersons() { using (var context = new linqAssignmentsDataContext()) ...