0

这两个类有什么区别?

public static class MyClass
{
    public static string SayHello()
    {
        return "Hello";
    }
}

public static class MyClass
{
    public string SayHello()
    {
        return "Hello";
    }
}

第二个 SayHello 方法是否也是静态的,因为它位于静态类上?如果是这样,当在静态类中定义方法时,是否有任何理由在方法上包含静态关键字?

4

4 回答 4

8

第二个例子在 c# 中甚至是不可能的,你会得到编译时错误:

“SayHello”:不能在静态类中声明实例成员

所以你必须static用关键字声明静态类的成员。

于 2011-08-18T22:17:07.420 回答
1

静态类无法实例化,因此您的第二段代码不可编译。非静态方法只能在实例化类中访问。

于 2011-08-18T22:22:25.393 回答
0

“...因此,创建静态类与创建仅包含静态成员和私有构造函数的类非常相似。私有构造函数可防止类被实例化。

使用静态类的优点是编译器可以检查以确保没有意外添加实例成员。编译器将保证无法创建此类的实例。”

http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

于 2011-08-18T22:18:25.503 回答
0

静态类是密封的,不能包含实例成员。静态方法是类型的一部分而不是实例,静态方法不能访问实例成员。静态方法不能是虚拟的,但可以重载。静态方法也会发出“call”IL 操作码而不是“callvirt”。

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

于 2011-08-18T22:19:28.887 回答