在C#中有什么区别:
public static class ClassName {}
和
public class ClassName {}
答案 0 :(得分:67)
首先,对答案的评论询问“静态”是什么意思。在C#术语中,“静态”表示“与类型本身有关,而不是类型的实例”。您可以使用类型名称而不是引用或值来访问静态成员(来自其他类型)。例如:
// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();
现在,静态类......
静态类通常用作“实用程序”类。规范示例可能是System.Math
。创建一个数学实例是没有意义的 - 它只是“是”。一些规则(“可以”和“不能”):
object
。您不能指定不同的基类型,也不能使静态类实现接口。abstract
修饰符。sealed
修饰符。答案 1 :(得分:39)
静态类无法实例化,并且只能包含静态成员。因此,对静态类的调用如下:MyStaticClass.MyMethod(...)
或MyStaticClass.MyConstant
。
非静态类可以实例化,并且可以包含非静态成员(实例构造函数,析构函数,索引器)。非静态类的非静态成员只能通过对象来调用:
MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
答案 2 :(得分:6)
静态类也不能继承,而具有静态成员的非静态类可以继承。
答案 3 :(得分:6)
public static class ClassName {}
静态类就像一个全局变量:您可以在代码中的任何位置使用它而无需实例化它们。 例如: ClassName。在点运算符之后,您可以使用它的任何属性或功能。
public class ClassName {}
但是如果你有非静态类,那么你需要创建这个类的实例。 例如:
ClassName classNameObject = new ClassName();
答案 4 :(得分:5)
静态类中的所有方法/属性必须是静态的,而“普通”类可以包含实例和静态方法的混合。
答案 5 :(得分:3)
静态类只能包含静态成员。
可以在不首先实例化类的情况下使用静态成员。
答案 6 :(得分:3)
您无法实例化(创建对象)静态类。它只能包含静态成员。
示例:System.Math
答案 7 :(得分:2)
静态类和成员用于创建可以访问的数据和方法,而无需创建类的实例(使用new
关键字,它们不能有构造函数)。
静态类可以在不依赖于自己的对象标识时声明,因此静态类必须只包含静态成员。
当加载包含类的程序或命名空间时,CLR会加载这些类。
它们也是密封的,不能继承。
答案 8 :(得分:2)
http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html - 非常好的文章。这是针对Java的。但我认为C#中的概念也应该相同。
答案 9 :(得分:1)
c中的静态变量
类的本地变量作为自动变量 但是静态变量不会消失,因为函数不再有效。它们的值仍然存在。如果控制返回,静态变量具有相同的值
c中的静态函数 其他文件中的函数不可见的函数。
* cpp * 中的静态数据成员 数据成员可以是cpp中的变量或函数 static适用于两个数据成员 类本身可以是静态的 “该类中的所有对象只共享一个静态数据成员副本” 静态数据成员只能访问静态数据成员
静态课程 这个类不能实例化对象