1

可能重复:
何时在 C# 中使用静态类

抱歉,如果这个问题没有意义或愚蠢,我正在尝试创建一个Windows 服务,其中我的类文件很少,每个类文件都有一些调用另一个类文件的函数。

例如

类文件有一种创建电子邮件的方法,例如

public bool CreateEmail()
{
 try
 {
 //code here
 }
 catch (Exception ex)
 {
    //Write to Log
    to create log  call function from **another class file**
 }
}

还有更多这样的调用。我想知道是使用静态类更好还是为每个类创建对象并调用方法会更好。推荐的方法是什么?

4

4 回答 4

3

想一想:

  1. 是否需要进行单元测试,如果是,静态类不好,不能模拟,以防您遵循测试能力的设计。

  2. 单一职责原则,不要将每个方法都放在一个所谓的实用程序类中。将相关的单独类中的方法分组并遵循 SRP。

  3. 类应该有有意义的名字。Utilityutilhelper不是有意义的名称

于 2012-10-29T07:47:04.463 回答
3

问你自己

  • 此方法与您的对象的相关性如何。
  • 无论如何,它是否会改变对象的状态。

如果它相关并且确实改变了你的对象状态,那么你应该在类中有这个方法。如果没有,那么你不需要在你的类中有那个方法

从你的情况来看,很明显它不会改变任何状态,而是需要来自其他对象的一些信息来发送邮件。所以我肯定会把它变成一个实用类(静态类)并使用每当我需要它。

于 2012-10-29T07:52:43.213 回答
2

如果您只使用类文件对方法进行分组,并且除了调用这些方法之外不需要类的实例,那么您应该使用静态类 - 这就是它们的用途。

于 2012-10-29T07:41:44.403 回答
2

我想知道是使用静态类更好还是为每个类创建对象并调用方法会更好。

如果它是多线程环境并且日志记录需要在多个调用之间共享一些数据,请为每个调用创建单独的实例。否则,请使用静态类和方法。

于 2012-10-29T07:45:08.847 回答