部分类和访问修饰符问题

Nas*_*adi 17 .net c# access-modifiers partial-classes

根据MSDN文档的部分类:

所有部件必须具有相同的可访问性,例如public,private等.

但是如果您创建一个WindowsForm应用程序,您将在两个分部类中具有默认的Form类.

背后的代码:

public partial class Form1 : Form
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

和设计师:

partial class Form1
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

访问修饰符是不同的,但它将编译.

我在这里错过了什么吗?

Tho*_*que 17

如果未在分部类的某个部分中指定访问修饰符,则它将使用与其他部分相同的访问修饰符.


C#5规范的相关部分:§10.2.2

当部分类型声明包含可访问性规范(public,protected,internal和private修饰符)时,它必须与包含可访问性规范的所有其他部分一致.如果部分类型的任何部分都不包含可访问性规范,则为该类型提供适当的默认可访问性(第3.5.1节).

因此规范说如果指定了可访问性必须与其他部分一致; 换句话说,它不必在每个部分中指定.尽管如此,措辞可能会变得不那么模糊.

  • @NaserAsadi规范基本上表示默认仅适用于*没有部分具有修饰符.*如果任何部分有修饰符,那么这就是类的可访问性.但是,如果部件具有冲突修饰符,则表示编译错误. (4认同)