真的很希望能来装饰我的课有某种会强制使用using语句,以便在班上总是会被安全地处理,避免内存泄漏的属性。任何人都知道这种技术的?

有帮助吗?

解决方案

好了,还有你可以有点做这件事 - 只允许通过,这需要委托一个静态方法访问您的对象。作为一个非常简化的例子(如明显有打开文件的许多不同的方式 - 读/写等):

public static void WorkWithFile(string filename, Action<FileStream> action)
{
    using (FileStream stream = File.OpenRead(filename))
    {
        action(stream);
    }
}

如果能够创建自己可支配的对象实例的唯一的东西是你自己的类中的方法,你可以确保他们得到适当的使用。诚然,有什么可采取引用的副本,并试图以后使用它停止委托的,但是这并不完全同样的问题。

此技术严重限制,你可以用你的对象做什么,当然 - 但在某些情况下,可能是有用的。

其他提示

您可以使用的FxCop 强制执行这个规则。请参阅Wikipedia用于快速概述

如果你想确保你的对象总是布置,结合使用终结与IDisposable的。

但在此之前,上了IDisposable和终结,念起来是有意识的事实,你通常不需要它们,除非你的类是做一些像管理一个非托管资源的寿命。

使用您的对象将被回收“最终”是否裹在使用或不终结。 using语句,这是IDisposable的便利,使确定性清理发生。唯一要注意的是,与终结对象是清理更昂贵并且在围绕在存储器更长一般棒,而他们等待定稿。

REF 何时需要实现终结或IDisposable的? 要么 technorabble:使用处置,终结和IDisposable的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top