【问题标题】:Static classes pros and cons [duplicate]静态类的优缺点[重复]
【发布时间】:2014-03-21 01:29:38
【问题描述】:

我是一名 C++ 程序员,转而使用 C#。有人说我不使用静态类。 我知道在 C# 中,如果类只有静态成员,它应该是静态的。(我的类只有静态成员) 你能解释一下使用静态类可能会出现什么问题吗? 我们什么时候真的应该使用它们?

谢谢

【问题讨论】:

  • 如果使用得当,static 类没有任何问题。您需要小心静态状态(即static 字段)——出于数据隔离和多线程的原因。所以这很大程度上取决于你在做什么;p

标签: c# static-methods static-classes


【解决方案1】:

主要原因是有时(但并非总是)最好使用单例类,因为单例类可以实现接口。

【讨论】:

    【解决方案2】:

    静态类与非静态类没有区别,除了你不能实例化静态类(因为它们当然是静态的)而且这个静态类将无法利用很酷的 OOP 特性,比如作为继承(它不能在 C# 中子类化)。

    当静态类包含静态成员时,您必须注意的主要事项是使类静态成员在被多个线程使用时是线程安全的。

    您能否解释一下使用静态类可能会出现什么问题?我们什么时候真的应该使用它们?

    如果您的类只公开静态成员,那么您可以将其设为静态类,但前提是您确定不需要此类的实例。事实上,使用静态类绝对没有问题,只需确保线程安全(如果需要)并确保它适合您的系统设计。

    【讨论】:

    • 你所说的如果被多个线程使用使其成为线程安全的一切也同样适用于非静态方法......
    • 绝对...除非静态方法是自包含的
    【解决方案3】:

    静态类与非静态类基本相同,但有一个区别:静态类不能被实例化。

    http://msdn.microsoft.com/en-us/library/79b3xss3.aspx

    也请查看此链接:

    When to use static classes in C#

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-22
      • 2011-10-23
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2012-02-06
      相关资源
      最近更新 更多