簡體   English   中英

在 c# 中聲明一個類時可以擁有的最大有效修飾符數量是多少?

[英]What is max number of valid modifiers you can have while declaring a class in c#?

這個問題更多是出於好奇。

我所說的修飾符是指在聲明類之前添加的關鍵字。

例如

//1       2        3             
public abstract partial class Foo
{

}

這有 3 個修飾符publicabstractpartial

從這個問題的角度來看,零修飾符類似於

class Foo
{

}

聲明類名之前可以擁有的最大有效修飾符數是多少?

最大數量是...

5!

(或 6 如果你算unsafe

根據here ,類聲明如下所示:

class_declaration
    : attributes? class_modifier* 'partial'? 'class' identifier type_parameter_list?
      class_base? type_parameter_constraints_clause* class_body ';'?
    ;

您可能不會將屬性視為“修飾符”,但您可能會將partial關鍵字視為“類修飾符”,盡管它不是實際的class_modifier

class_modifier的列表是:

class_modifier
    : 'new'
    | 'public'
    | 'protected'
    | 'internal'
    | 'private'
    | 'abstract'
    | 'sealed'
    | 'static'
    | class_modifier_unsafe
    ;

我們知道最長的訪問修飾符是protected internal ,因此我們可以忽略所有訪問修飾符:

class_modifier
    : 'new'
    | 'abstract'
    | 'sealed'
    | 'static'
    | class_modifier_unsafe
    ;

您只能選擇sealedstaticabstract ,因此我們剩下 6 個“關鍵字”:

  • protected
  • internal
  • new
  • sealed / static / abstract
  • partial
  • unsafe

請注意, newprotected internal只能在嵌套類聲明中使用。

暫無
暫無

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

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