【问题标题】:global static class object全局静态类对象
【发布时间】:2011-05-30 09:12:53
【问题描述】:

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

【问题讨论】:

  • 潜在的锁定瓶颈?
  • 当然有潜在的陷阱,每一种方法都有潜在的陷阱,我们的想法是绕过它们,同时让你的应用程序做你想做的事。您并没有真正告诉我们您的应用程序将要做什么,因此我们无法告诉您潜在的陷阱是否相关。
  • 如果你在谈论单身人士这个链接可以帮助stackoverflow.com/questions/137975/…
  • 谢谢米奇。你能解释一下吗。任何帮助链接就足够了
  • @Mitch 的意思是,如果您在多线程应用程序中有全局可变状态,您很可能需要锁定它才能访问它。如果很多线程经常这样做,性能就会受到影响。

标签: c# .net static


【解决方案1】:

如果对象不包含可变状态,则可以。我喜欢使用无副作用的静态函数。 (Mockists 可能不同意这一点,因为你不能像接口函数那样轻松地模拟静态函数。)

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

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

【讨论】:

    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    相关资源
    最近更新 更多