全局静态类对象

时间:2011-05-30 09:12:53

标签: c# .net static

我正在创建一个全局静态对象,它将在整个应用程序中使用。我将在delegates / threads中使用成员函数。这种方法有潜在的缺陷吗?

1 个答案:

答案 0 :(得分:5)

如果对象不包含可变状态,则可以没问题。我喜欢使用无副作用的静态函数。 (模仿者可能会不同意这一点,因为你不能像接口函数一样容易地模拟静态函数。)

但全球可变状态是邪恶的。你可以找到很多关于全局变量问题的文章(以及它们的其他形式,如单例,静态字段......)。

如果你真的需要某种全球状态,请不要在考虑这个假设的情况下编写你的程序。而是让DependencyInjection将一个比全局状态对象的实例注入到其他对象中。这样,您可以在需要时轻松切换到多个实例。例如,在运行测试时,它确实非常有用。