举个例子:
using (Brushes.Black)
{
...
}
不是一个好主意,因为它是静态的。下次你的应用程序使用Brushes.Black时,你会遇到问题,因为它已被处理掉了。
现在,如果你只使用Brushes.Black,那么可以不处理它,因为你只留下一个非托管资源(希望!)。
但是,一般来说,你应该避免使用大量的静态IDisposable,还是有些东西我不知道?
答案 0 :(得分:3)
通常只使用它们,让框架类担心处理它们。
它们就在那里,您可以在不创建和处理它们的情况下使用它们。每个人在第一次使用时都会创建,并缓存在哈希表中。框架类负责在应用程序关闭时正确处理它们。
确实没有那么多静态IDisposable可以让你担心它们。如果你要使用大量的画笔,你可能会用循环中的颜色创建它们(然后你当然要负责处理它们)。
答案 1 :(得分:2)
举个例子:
使用(Brushes.Black){...}
不是一个好主意,因为它是 静态的。下次你的应用程序进入 使用Brushes.Black,你会有的 问题,因为它一直存在 地布置。
它不仅仅是一个静态字段 - 该属性主动运行代码,以便在需要时创建新实例。只需查看相应的代码( Reflector ):
public static Brush Black
{
get
{
Brush brush = (Brush) SafeNativeMethods.Gdip.ThreadData[BlackKey];
if (brush == null)
{
brush = new SolidBrush(Color.Black);
SafeNativeMethods.Gdip.ThreadData[BlackKey] = brush;
}
return brush;
}
}