【问题标题】:What is max number of valid modifiers you can have while declaring a class in c#?在 c# 中声明类时,您可以拥有的最大有效修饰符数是多少?
【发布时间】:2020-03-27 17:20:52
【问题描述】:

这个问题更多是出于好奇。

修饰符是指在声明类之前添加的关键字。

例如

//1       2        3             
public abstract partial class Foo
{

}

这有 3 个修饰符 publicabstractpartial

从这个问题的角度来看,零修饰符类似于

class Foo
{

}

在声明类名时,您可以在类名之前拥有的最大有效修饰符数是多少?

【问题讨论】:

    标签: c# modifier


    【解决方案1】:

    最大数量是...

    5!

    (如果算上unsafe,则为 6 个)

    根据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 只能用于嵌套类声明。

    【讨论】:

    • 不可能,我不敢相信这是5!,这太过分了! (数学笑话)
    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多