我无法理解这一点.我尝试在VS2010中做一个小例子,如下所示.
"因此,创建静态类与创建仅包含静态成员和私有构造函数的类非常相似"
此语句是否表示具有私有构造函数的类,并且下面的一个或多个静态方法是静态类?我知道只有在类中提到static关键字时才调用类静态.
另外,我们不能继承下面的类,也不能实例化这个类吧?
public class Base
{
private Base() { Console.WriteLine(" I am from normal Base constructor"); }
static void NewMethod() { Console.WriteLine("Hey I am from Static Base"); }
public void New() { }
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 13
因此,创建静态类与创建仅包含静态成员和私有构造函数的类非常相似
这句话试图找到正确的想法,但没有这样做.静态类是不喜欢,只有静态成员和私有构造函数的类.这是一个包含静态成员和私有构造函数的类:
class X
{
private X() {}
public static X Y() { return new X(); }
}
Run Code Online (Sandbox Code Playgroud)
但这根本不像一个静态类!该声明的作者似乎认为拥有私有构造函数会阻止您创建实例,但当然不会.
更准确的说法是:
创建一个静态类就像创建一个既抽象又密封的类,并且不包含实例成员.
实际上,当C#编译器生成静态类的代码时,它正是它的作用:它将类标记为抽象(因此无法直接实例化)和密封(因此无法扩展).
我注意到你宣布一个既抽象又自己密封的课程是不合法的; 在C#中这样做的唯一方法是创建一个静态类.
我将把这个误导性的句子提请MSDN文档管理员注意.谢谢你指出来.
Tre*_*ley 12
这意味着:
public static class Foo
{
public static void Bar() { }
}
Run Code Online (Sandbox Code Playgroud)
与...基本相同
public class Foo
{
private Foo() { }
public static void Bar() { }
}
Run Code Online (Sandbox Code Playgroud)
因为如果类只有一个私有构造函数,则无法在类外部实例化它.
归档时间: |
|
查看次数: |
5806 次 |
最近记录: |