关于C中的静态类#

Regarding Static class in c#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
When to Use Static Classes in C#

为什么有人会写一个静态类。我们可以在任何类中声明静态方法,只调用该方法而不创建类实例。所以请告诉我在什么情况下,一个人会创建一个静态类,并且告诉我静态类和普通类之间的主要区别是什么。

谢谢


一般来说,我建议您不要编写静态类。

不过,有些情况下你需要它们

扩展方法必须活在静态类上。这是使用静态类的最佳原因。

如果您确实有一些静态方法,它们作为扩展方法没有意义,并且不适合您的对象模型,那么可能有空间收集静态方法。尤其是当你不能重新设计你的应用时。

有时这是因为你在处理一些你不能改变的第三方事务。然后,如果您最终得到一个只包含静态方法的类,那么您应该使它成为静态的,因为任何创建实例的人都显然不理解您所做的工作。

在大多数情况下,我的建议是避免使用静态方法、类和数据。我不是说永远不要用它们-只是尽量不要。


静态类不能包含任何构造函数,只能是在第一次访问其成员时调用的静态构造函数。

这基本上就是区别。从性能上讲,编译器还免费提供了另一个,因为它可以检查以确保没有意外添加实例成员。编译器将保证不能创建此类的实例。

静态类也是密封的,因此不能继承。

http://MSDN.微软.com/EN/库/79B3xSS3(v= vs100)。

静态类与非静态类基本相同,但有一点不同:不能实例化静态类。换句话说,不能使用new关键字创建类类型的变量。

另一个有效点是扩展方法必须在静态类中声明

http://en.wikipedia.org/wiki/extension_方法

然而,C 3.0中扩展方法的新语言特性使后一种代码成为可能。这种方法需要一个静态类和一个静态方法。


无法实例化静态类。它的主要用途是使它清楚地表明类没有实例方法,并防止人们意外地试图"新建"类。


区别在于您不能实例化静态类。因此,如果不希望类被实例化,那么您可以使它成为静态的。这在处理线程问题时非常有用,并且您希望保证所有线程都使用类的同一实例。

更具哲学意义的场景是,当您有一个不需要实例化的类时,例如(例如)您正在构建一个数据库应用程序,并创建一个类来完成所有数据库访问工作。它基本上只是一组方法。然后,使类静态化只是使设计更加一致的一个步骤。


在静态类中,所有方法都是静态的。我们不能在静态类中声明普通方法。

静态类和普通类的区别。

我们不能创建静态类的对象,当我们使用静态类的方法时,只使用classname.methodname,但是在普通类中,我们必须先创建类的对象,然后才能访问普通类的方法。

静态类,例如

1
Class1.functionname();

正常等级,例如

1
2
3
Class1 cs = new class1();

cs.functionname();

函数名不应是私有的。