将静态方法放在静态类中与将实例方法放在静态类中有什么区别?

本文关键字:静态类 区别 什么 实例方法 静态方法 | 更新日期: 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'。

静态类有一个不带参数的静态构造函数,该构造函数在首次使用该类型之前被调用。