这个问题更多是出于好奇。
我所说的修饰符是指在声明类之前添加的关键字。
例如
//1 2 3
public abstract partial class Foo
{
}
Run Code Online (Sandbox Code Playgroud)
这有3个修饰语public,abstract和partial。
从这个问题的角度来看,零修饰符类似于
class Foo
{
}
Run Code Online (Sandbox Code Playgroud)
声明类名之前可以拥有的最大有效修饰符数是多少?
最大数量是...
(或 6 如果你数数unsafe)
根据here,类声明如下所示:
class_declaration
: attributes? class_modifier* 'partial'? 'class' identifier type_parameter_list?
class_base? type_parameter_constraints_clause* class_body ';'?
;
Run Code Online (Sandbox Code Playgroud)
你可能不指望属性为“调节剂”,但你可能会算的partial关键字为“类修饰”,虽然它不是一个实际的class_modifier。
名单class_modifier如下:
class_modifier
: 'new'
| 'public'
| 'protected'
| 'internal'
| 'private'
| 'abstract'
| 'sealed'
| 'static'
| class_modifier_unsafe
;
Run Code Online (Sandbox Code Playgroud)
我们知道最长的访问修饰符是protected internal,所以我们可以忽略所有的访问修饰符:
class_modifier
: 'new'
| 'abstract'
| 'sealed'
| 'static'
| class_modifier_unsafe
;
Run Code Online (Sandbox Code Playgroud)
您只能选择sealed,static和 之一abstract,因此我们剩下 6 个“关键字”:
protectedinternalnewsealed/ static/abstract partialunsafe请注意,newandprotected internal只能用于嵌套类声明。