2012-10-29 90 views
0

可能重复:
When to Use Static Classes in C#静态类或对象

如果对不起这个问题是没有意义的或愚蠢的我想创建一个窗口服务中,我有几类文件每类文件有一些调用另一个类文件的函数。

例如

类文件,一个有像

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

创建电子邮件的方法和更多的电话像this.I想知道如果使用静态类是好还是创建对象每个类和调用方法将better.Which是推荐的方式?

+4

你应该看看这个问题:[何时在C#中使用静态类](http://stackoverflow.com/questions/241339/when-to-use-static-classes-in-c-sharp) –

回答

2

问问自己

  • 如何相关的是这个方法将你的对象。
  • 是否改变反正你对象的状态。

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

从你的情况来看,它很清楚它不会改变任何状态,而是需要来自另一个对象的一些信息来发送mail.So我肯定会让这个util类(静态类),并在需要时使用它。

+0

我喜欢这个答案,很好的解释! – Jeff

+0

@Codelgnoto很好的解释..谢谢你的帮助 – Karthik

1

如果你只使用类文件组的方法,并不会被需要的类的实例比调用这些方法以外的其他,那么你应该使用一个静态类 - 那他们是什么。

1

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

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

2

想想:

  1. 你需要做单元测试,如果是的话,静态类是不好的,不能的情况下,被嘲笑你按照测试能力设计。

  2. Single responsibility principle,不要把每种方法都放到一个所谓的实用程序类。组方法单独的类这是一起有关,并按照SRP。

  3. 类应该具有有意义的名称。 实用UTIL帮手是没有意义的名字