将静态方法放在静态类中与将实例方法放在静态类中有什么区别?
本文关键字:静态类 区别 什么 实例方法 静态方法 | 更新日期: 2023-09-27 18:06:08
这两类的区别是什么?
public static class MyClass
{
public static string SayHello()
{
return "Hello";
}
}
public static class MyClass
{
public string SayHello()
{
return "Hello";
}
}
第二个SayHello方法也是静态的,因为它是一个静态类?如果是这样,在静态类中定义方法时,是否有理由在方法上包含static关键字?
第二个例子在c#中是不可能的,你会得到编译时错误:
'SayHello':不能在静态类中声明实例成员
所以必须用static
关键字声明静态类的成员
不能实例化静态类,因此第二段代码是不可编译的。非静态方法只能在实例化的类中访问。
"…因此,创建静态类与创建仅包含静态成员和私有构造函数的类大致相同。私有构造函数防止类被实例化。
使用静态类的优点是编译器可以检查以确保没有意外添加实例成员。编译器将保证不能创建该类的实例。"
http://msdn.microsoft.com/en-us/library/79b3xss3 (v = vs.80) . aspx
静态类是密封的,不能包含实例成员。静态方法是类型的一部分,而不是实例,并且静态方法不能访问实例成员。静态方法不能是虚拟的,但可以重载。静态方法也发出'call' IL操作码,而不是'callvirt'。
静态类有一个不带参数的静态构造函数,该构造函数在首次使用该类型之前被调用。