我在某个地方读到:
"抽象和封闭修饰符等同于一个静态类"
我还发现:
"当您声明一个静态类时,编译器在内部将该类标记为抽象和封闭,并在IL代码中创建一个私有构造函数"
因此,我决定这样做:
static class A
{
public static void test()
{
Console.WriteLine("test");
}
}
现在,"A"类不能被继承或实例化。
因此,让我们编写一个使用"抽象"来防止实例化并使用"密封"来防止继承的"B类"。
但是,这种方法失败了。
应该等同于:
public abstract sealed class B
{
private B()
{
}
public void test()
{
Console.WriteLine("test");
}
}
但是我收到了一个错误,显示“错误 CS0418: B':抽象类不能被封闭或静态”。
有什么想法为什么这是不可能的?
感谢您提前的答复。
abstract
和sealed
关键字来定义一个类,除非使用static
关键字。你可以通过将类声明为sealed
并使用私有构造函数来实现类似的功能,但它不会在编译后的IL中被标记为abstract
,也不会具有编译器确保只能放置static
成员的便利特性。 - Tim S.abstract sealed class
翻译成VB.NET语言时,得到的是MustInherit CannotInherit Class
。 - H H