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

C# 在C中创建类的新实例的最佳位置#,c#,class,instance,C#,Class,Instance,这些代码之间有什么区别 一, 公共类class1() { ... } 公共类Main() { 公开作废法() { class1k=newclass1;我认为这在很大程度上取决于您将如何使用该对象 它是一次性资源吗?每次使用它时都必须实例化和处理它(考虑数据库连接)?那么在方法中实例化是最安全的方法 如果容器对象打算在使用后快速释放,并且您希望在多个方法中使用依赖关系,那么在构造函数中或直接在字段中实例化它就可以了。最好的方法不是在代码中创建新实例,而是使用依赖关系注入。最好使用一些接口或抽象类。

这些代码之间有什么区别
一,

公共类class1()
{ ... }
公共类Main()
{
公开作废法()
{

class1k=newclass1;我认为这在很大程度上取决于您将如何使用该对象

它是一次性资源吗?每次使用它时都必须实例化和处理它(考虑数据库连接)?那么在方法中实例化是最安全的方法


如果容器对象打算在使用后快速释放,并且您希望在多个方法中使用依赖关系,那么在构造函数中或直接在字段中实例化它就可以了。

最好的方法不是在代码中创建新实例,而是使用依赖关系注入。最好使用一些接口或抽象类。这您不依赖具体的实现,您的代码更易于测试,因为您可以控制通过构造函数传递的
内容。在为
某人
类编写代码时,您不关心
某人
在何处创建,这表明您的
某人
依赖于它,没有它就无法创建

public class SomeOne{

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

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

这取决于退出该方法后是否需要它。但有一个共同点-在第一个示例中,被剪断的代码都不会被编译。在第一个示例中,您的实例k1对类中的所有对象都可用。并且只要程序执行该操作或显式指定空值,该实例就会保持活动状态。第二个示例将创建实例k1和ki当方法的作用域结束时,将调用它。
Public class class1()
{ ... }

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

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

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

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