2012-05-10 47 views
1

我可以避免初始化吗?无构造函数的类可以在没有实例化的情况下调用它们的方法吗?

我有一个简单的工厂没有构造函数。我用这样的:

var slf = new GenericSelectListFactory(); 
vm.Works = slf.getWorkgsl(0); 
vm.Cars = slf.getCargsl(0); 

我也可以用这样的:

vm.Cars = new GenericSelectListFactory().getCargsl(0); 

有什么办法来使用它没有新的关键字?

vm.Cars = GenericSelectListFactory.getCargsl(0); 
+13

如果你不想/需要一个实例,为什么不使用方法'static'? – dtb

+3

如果你只计划使用静态成员,那么使类为'static'也是有意义的。 –

+1

另请注意,“构造函数”类和“无状态”类有区别。只有静态类没有构造函数,非静态类具有由编译器生成的隐式构造函数。 – zneak

回答

8

使您的类的方法为静态。

class GenericSelectListFactory 
{ 
    public static List<Cars> getCargsl() 
    { 
     // your logic here 
    } 

} 
+0

这允许调用:'var cars = GenericSelectListFactory.getCargsl();'。谢谢 :) –

4

不“新”,你应该标记方法静态

2

可以使功能是静态的。

3

没有构造函数的类是由编译器分配一个默认的构造,主要是为了消除空的构造函数需要:

除非类是静态的,类没有构造函数给出一个公共的默认构造函数由C#编译器为了启用类实例化。

如果您想要在不初始化类的情况下访问方法,请使用方法static。尽管如此,你应该确保这些方法是线程安全的。

相关问题