静态类或对象

时间:2012-10-29 07:39:21

标签: c# object static

  

可能重复:
  When to Use Static Classes in C#

对不起,如果问题是无意义或愚蠢我试图创建 Windows服务,其中我有几个类文件,每个类文件都有一些调用另一个类文件的函数。

例如

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

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

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

4 个答案:

答案 0 :(得分:2)

想一想:

  1. 你是否需要进行单元测试,如果是,静态类不好,如果你按照设计测试能力就不能嘲笑。

  2. Single responsibility principle,不要将每个方法都放在一个所谓的实用程序类中。将单独的类中的方法组合在一起并遵循SRP。

  3. 类应具有有意义的名称。 实用程序 util 帮助程序不是有意义的名称

答案 1 :(得分:2)

问问自己

  • 此方法与您的对象的相关性。
  • 无论如何都会改变你对象的状态。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

  

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

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