簡體   English   中英

為什么密封關鍵字不包含在訪問修飾符列表中?

[英]Why is the sealed keyword not included in the list of access modifiers?

我認為sealed應該包含在C#語言的訪問修飾符列表中。 有人可以說出它被排除在外的原因嗎?

它不是一個訪問修飾符,它與是否可以繼承一個類有關...

如果你不能從一個類派生它並不意味着你無法訪問它。

訪問修飾符定義可以訪問方法或類,以及何時 (即: private :只有類成員, public :其他人等)。 將方法或類標記為已sealed意味着它不能被繼承。 它沒有說明訪問本身。

正確地說:如果使用sealed關鍵字,則仍需要添加訪問修飾符(除非默認訪問修飾符適合您)。

您的困惑可能與兩個關鍵字似乎都與保護級別有關。 這是真的,但我們沒有保護修飾符的概念。 sealed關鍵字稱為sealed修飾符 ,因為它修改了要封閉的類或方法。 這就像一個布爾開關:一個類或方法要么是密封的,要么是密封的,不管它的訪問修飾符如何。

為了增加混淆,存在密封訪問器 ,這意味着不允許派生訪問器(gettor / settor)(C#標准10.7.5)。

以下所有有效類定義都具有sealed類,但它們都具有不同的訪問級別,因此您可以看到sealed不是訪問修飾符,因此未被Microsoft列為一個:

public sealed class MyPublicClass
{
}

internal sealed class MyInternalClass
{
}

private sealed class MyPrivateClass
{
}

你必須相信微軟對他們創建的語言知道一兩件事:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM