public static class ClassName {}
并且:
public class ClassName {}
public static class ClassName {}
并且:
public class ClassName {}
首先,对于一个回答中提到的"static"是什么的评论。在C#中,“static”表示“与类型本身有关,而不是类型的实例”。您可以使用类型名称而不是引用或值来访问静态成员(从另一个类型)。例如:
// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();
静态类通常用作“实用程序”类。 典型示例可能是System.Math
。 创建 Math 的实例没有意义 - 它就是 "存在 "的。以下是一些规则(包括"可以"和"不可"):
object
。 您不能指定不同的基类型,也不能使静态类实现接口。abstract
修饰符。sealed
修饰符。一个静态类无法被实例化,只能包含静态成员。因此,对于静态类的调用方式为:MyStaticClass.MyMethod(...)
或 MyStaticClass.MyConstant
。
一个非静态类可以被实例化并且可能包含非静态成员(实例构造函数、析构函数、索引器)。非静态类的非静态成员只能通过对象来调用:
MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
public static class ClassName {}
静态类就像全局变量一样:您可以在代码的任何地方使用它们,而无需实例化。
例如:ClassName. 在点运算符之后,您可以使用它的任何属性或函数。
public class ClassName {}
但如果您有非静态类,则需要创建此类的实例。
例如:
ClassName classNameObject = new ClassName();
静态类中的所有方法和属性必须是静态的,而“普通”类可以包含实例和静态方法的混合。
静态类只能包含静态成员。
静态成员可以在不实例化类的情况下使用。
静态类无法实例化(创建对象),并且只能包含静态成员。
例如:System.Math
静态类和成员用于创建数据和方法,可以在不创建类的实例(使用new
关键字时,它们不能有构造函数)的情况下访问。
当没有依赖于其自身对象标识时,可以声明静态类,因此静态类必须仅包含静态成员。
当程序或包含类的命名空间加载时,CLR会加载这些类。
它们也是密封的,不能从中继承。
C语言中的静态变量
与自动变量一样,静态变量是类的局部变量 但静态变量并不会在函数不再活跃时消失。它们的值会持续存在。如果控制权回来,则静态变量具有相同的值。
C语言中的静态函数 这些函数对其他文件中的函数不可见。
*C++中的静态数据成员* 数据成员可以是变量或函数 静态适用于数据成员和类本身 "静态数据成员只有一个实例被所有该类对象共享" 静态数据成员只能访问静态数据成员
静态类 这个类不能实例化对象