题
C#之间的区别是什么:
public static class ClassName {}
并且:
public class ClassName {}
解决方案
一个静态类不能被实例化,并且只能包含静态成员。因此,对于一个静态类的调用是如:MyStaticClass.MyMethod(...)
或MyStaticClass.MyConstant
一个非静态类可以被实例化,并且可以含有非静态成员(实例构造函数,析构函数,索引)。非静态类的非静态成员只通过一个对象是可调用:
MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
其他提示
首先,在回答询问什么是"静态"的意思。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
.你不能指定不同基本类型,或者使静类实现一个接口。 - 静类不能有任何成员,所有的变量,方法等必须是静态的。
- 静类不能宣布任何情况构造和编译器 不不 创建一个无参构造的默认。(之类的静态来C#2.0中,人们往往会建立一个抽象的类与一个私人的构造,阻止实例。没有必要在这里.)
- 静态的课程隐含的抽象(即他们编IL其中描述了一种抽象的类),但是你不能加入
abstract
修改自己。 - 静类是隐密封(即他们编IL其中描述了一个密封类),但是你不能加入
sealed
修改自己。 - 静类 可 可通用的。
- 静类 可 是嵌套、在非静态的或静态的课程。
- 静类 可 有嵌套的类型,无论是非静态的或静态的。
- 只有静态的,顶级的非通用课程可以包含延伸方法(C#3.0).
一个静态类也无法从被继承,而一个非静态类的静态成员可以从被继承。
public static class ClassName {}
一个静态类,就像是一个全局变量:你可以在你的代码的任何地方使用它没有实例他们。 例如:的类名。点运算符后,您可以使用它的任何属性或功能。
public class ClassName {}
但如果你有非静态类,那么你需要创建这个类的一个实例。 例如:
ClassName classNameObject = new ClassName();
的所有方法/在一个静态类属性的必须强>是静态的,而“正常”类可以包含实例和静态方法的混合。
您不能实例(创建对象)一个静态类。它只能包含静态成员。
实施例:System.Math
静态类可以只包含静态成员。
静态成员可以在不首先实例化一个类一起使用。
静态类和构件被用于创建可以在不产生一个实例进行访问的数据和方法(使用new
关键字,它们不能有一个构造函数)之类的
当存在对自己的对象的身份不依赖,所以一个静态类必须只包含静态成员静态类可以声明。
这类由当包含类别的节目或命名空间被加载CLR加载。
它们也被密封,不能从被继承。
http://www.javaworld.com /javaworld/javaqa/1999-08/01-qa-static2.html - 在这个非常不错的文章。这是Java。但我认为概念是应在C#中也一样。
在C的静态变量强>
可变本地一类作为自动变量 但是静态变量不消失为函数不再active.Their值persist.If控制回来,静态变量具有相同的值
在C的静电功能强> 函数是不可见的其他文件中的功能。
* 在CPP静态数据成员* 数据成员可以是在CPP变量或函数 静态适用于数据成员 类本身可以是静态的 “有在该类的所有对象共享静态数据memberss只有一个副本” 静态数据成员只能访问静态数据成员
<强>静态类强> 这个类不能实例化对象