我在用C#写一些代码时,发现自己在写。
return new MyClass(...
当我注意到这两个 return
和 new
都是C#关键字。所以我想知道C#中最长的合法关键字序列是什么。我能想到的就是。
internal static override void MyFunc(...
在哪里 internal static override void
都是关键词。你能想到更长的关键词序列吗?
注:这个问题其实没有什么意义。我只是希望在火上浇灌更多一些乐趣:-)
对于6:
new protected internal unsafe virtual decimal Foo() {...}
编辑为7:
new protected internal unsafe virtual extern decimal Foo();
如果我们允许括号和大括号... ...
(编辑 锁"、"new object()"、"as "和 "string "是由其他人贡献的;见注释)
decimal Bar() {
lock (new object() as string) {
if (true) {
checked {
unsafe {
try {
do {
return default(decimal);
unchecked {break;}
continue;
} while (false);
}
catch { throw; }
finally { }
}
}
}
}
}
我想这是无限的。
return null as string as string as string as string as string....
这里是另一个案例,你想怎么长就怎么长。
do do do do do do do do do do do do do do do // ...
while(x) while(x) while(x) while(x) while(x) // ...
有了上下文关键词,你也可以有
await await await await await await await // ...
internal protected static volatile string foo = "bar";
这就是5。
还有一个变种的方法定义(我同事找到的)。
protected internal override sealed unsafe async void await() { ... }
一共有8个关键字 使用的事实是 await
是一个上下文关键字,所以它可以被重复使用在方法名上。
public abstract class Base {
protected internal abstract ref readonly int MyMethod();
}
public class Sub : Base {
extern sealed protected internal override unsafe ref readonly int MyMethod();
}
我设法在方法声明中加入了9个方法。不知道是否可以在方法声明中加入更多的内容。
我可以作弊吗?
internal protected static volatile StringBuilder @string =
new StringBuilder(int.Parse("12"));
使用事实上,我可以使用关键字或其他保留的术语作为变量名,如果我在它前面加上@ -来在9,如果你允许StringBuilder的重复。