在C#中创建新类实例的最佳位置

时间:2015-09-06 13:51:00

标签: c# class instance

这些代码之间有什么区别
1。

Public class class1()
{ ... }

Public class Main()
{
   public void method()
   {
      class1 k = new class1;     <---
      ...
   }
}

2

Public class class1()
{ ... }

Public class Main()
{
   class1 k = new class1;      <---

   public void method()
   {
      k.use();
      ...
   }
}

在第二类的根或每个需要class1的方法和函数中创建类实例的更好位置在哪里?

2 个答案:

答案 0 :(得分:1)

我说这很大程度上取决于你如何使用这个对象。

是否是一次性资源,每次使用它时都必须进行实例化和处理(考虑数据库连接)?然后在方法中实例化是最安全的方式。

如果容器对象在使用后要快速处理,并且您希望在多个方法中使用依赖项,那么在构造函数中或直接在字段中实例化它可能没问题。

答案 1 :(得分:0)

最好的方法不是在代码中创建新实例,而是使用依赖注入。最好使用一些接口或抽象类。这样您就不会依赖于具体的实现,并且您的代码更易于测试,因为您可以控制passedThroughConstructor的内容。在为SomeOne课程编写代码时,您并不关心创建SomeTwo的位置,而是表明您的SomeOne取决于它,如果没有它,则无法创建。{/ p>

public class SomeOne{

ISomeTwo _forInternalUse;
  public SomeOne(ISomeTwo passedThroughConstructor){
     _forInternalUse = passedThroughConstructor;
  }

  public void SomeOtherMethod(){
      _forInternalUse.DoStuff();
   }
}