2

sealedC# 言語のアクセス修飾子のリストに含める必要があると思います。除外された理由を誰か教えてください。

4

4 に答える 4

10

アクセス修飾子ではなく、クラスを継承できるかどうかに関係しています...

于 2010-08-18T10:38:22.220 に答える
6

クラスから派生できないからといって、アクセスできないわけではありません。

于 2010-08-18T10:39:04.393 に答える
6

アクセス修飾子は、誰がいつメソッドまたはクラスにアクセスできるかを定義します (例: private: クラス メンバーのみ、public: 他の全員など)。メソッドまたはクラスを としてマークするsealedことは、継承できないことを意味します。アクセス自体については何も述べていません。

sealed正しく言えば、キーワードを使用する場合は、アクセス修飾子を追加する必要があります(デフォルトのアクセス修飾子が適している場合を除く)。

あなたの混乱は、両方のキーワードが保護レベルに関するものであるように見えることについてかもしれません. これはある程度正しいのですが、保護修飾子という概念はありません。sealedキーワードは、封印されるクラスまたはメソッドを変更するため、封印修飾子と呼ばれますこれはブール スイッチのようなものです。クラスまたはメソッドは、アクセス修飾子に関係なく、封印されているか、封印されていないかのいずれかです。

さらに混乱を招くのは、封印されたアクセサーが存在することです。これは、アクセサー (gettor/settor) の派生が許可されていないことを意味します (C# 標準 10.7.5)。

于 2010-08-18T10:43:44.990 に答える
1

次のすべての有効なクラス定義はクラスを特徴としていますが、それらはすべて異なるレベルのアクセスを持っているため、これはアクセス修飾子ではなく、したがって Microsoft によってリストされていないsealedことがわかります。sealed

public sealed class MyPublicClass
{
}

internal sealed class MyInternalClass
{
}

private sealed class MyPrivateClass
{
}

Microsoft が作成した言語について 1 つまたは 2 つのことを知っていることを信頼する必要があります :)

于 2010-08-18T10:51:56.440 に答える