2015-09-06 67 views
-3

是什么这些代码
1.最好的地方,在C#中创建新的类实例

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的方法和函数中?

+1

这将取决于您退出该方法后需要它。 –

+0

虽然有一个共同点 - 两个代码都不会在第一个例子中编译 – dotnetom

+2

,您的实例k1将可用于您班级中的所有内容。并且只要程序执行或显式地给出空值,它们就会保持活动状态。 第二个示例将创建实例k1并在该方法的作用域结束时将其终止。 –

回答

1

我想说这取决于你将如何使用该对象。

它是一次性资源,必须在每次使用它时进行实例化和处理(想到db连接)?然后在该方法中实例化是最安全的方式。

如果容器对象在使用后很快就会被抛弃,并且您想在多个方法中使用依赖关系,那么在构造函数中或直接在该字段中对其进行实例化即可。

0

最好的办法不是在代码中创建新实例,而是使用依赖注入。最好使用一些接口或抽象类。这样你就不依赖于具体的实现,你的代码更具可测性,因为你可以控制什么是passedThroughConstructor。在编写SomeOne类的代码时,您并不在乎创建的SomeTwo的位置,但是会显示SomeOne依赖于它,并且不能在没有它的情况下创建它。

public class SomeOne{ 

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

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