protected internal class foo
{
//this compiles without any errors
}
また
internal class bar
{
public int quix;
protected internal int zyx;
//this compiles without any errors
}
これらのコンパイラのバグまたは私の標準の誤解ですか?
説明:
- クラスは、保護された内部アクセス修飾子を持つことはできません。MSDNによるとパブリックまたは内部のみです(名前空間内で直接宣言されている(つまり、他のクラスまたは構造内にネストされていない)クラスおよび構造体は、パブリックまたは内部のいずれかになります。アクセス修飾子が指定されていない場合、内部がデフォルトです)。
- すべてのアクセス修飾子をすべてのコンテキストのすべてのタイプまたはメンバーで使用できるわけではありません。場合によっては、タイプメンバーのアクセシビリティは、その包含タイプ(MSDN)のアクセシビリティによって制約されます。公衆は失敗するはずです。保護された内部は私にはあいまいです-内部修飾子は必要ありません。
編集:私がMonoを使用しているという事実は不要です。なぜなら、質問は、MONOが何をするか、何をしないかではなく、標準が何を言うかについてでした。多分私は自分のコンパイラをコーディングしています。そのため、MSDNを引用して、許可されているものと許可されていないものを正確に示しました。