c#抽象方法:内部公共和虚拟?

Nov*_*Net 8 c# abstract-class private public access-modifiers

内部公开的抽象方法和c#中的虚拟方法吗?

默认情况下,所有方法都是私有的,如果抽象方法是私有的,则派生类将无法使用它,从而产生错误 "virtual or abstract members cannot be private"

And*_*are 12

我认为你提出的问题与大多数人的想法不同(换句话说,你似乎明白了什么abstract意思).

您不能声明私有抽象方法 - 编译器发出错误.这两个类都不会编译:

class Foo
{
    private abstract void Bar();
}

class Baz
{
    // This one is implicitly private - just like any other 
    // method declared without an access modifier
    abstract void Bah();
}
Run Code Online (Sandbox Code Playgroud)

编译器阻止您声明无用的方法,因为私有抽象成员不能在派生类中使用,并且对声明类没有实现(因此没有用).

重要的是要注意编译器应用于抽象成员的默认访问修饰符(如果您没有自己指定)仍然private就像该方法不是抽象的那样.

  • 如果问题是"内部公开的抽象方法和c#中的虚拟"吗?然后答案是"否",默认情况下它们是"私有的",因此如果没有给出访问权限,则会产生编译错误.C#并没有为所有内容添加糖,并且有时让我们工作,但即使这样,编译器错误消息也能很好地抓住我们的手. (2认同)

Onk*_*org 5

摘要只是一种表达方式:“我在这里,但还没有人告诉我我要做什么。” 由于没有人实施该成员,因此必须有人这样做。为此,您必须继承该类,并覆盖该成员。

为了能够覆盖某些东西,它必须被声明为abstractor virtual,并且必须至少可以被继承者访问,即必须被标记为protected, internalor public