只用C#关键字就能做出最长的法律语句块是什么?

问题描述 投票:20回答:7

我在用C#写一些代码时,发现自己在写。

return new MyClass(...

当我注意到这两个 returnnew 都是C#关键字。所以我想知道C#中最长的合法关键字序列是什么。我能想到的就是。

internal static override void MyFunc(...

在哪里 internal static override void 都是关键词。你能想到更长的关键词序列吗?

注:这个问题其实没有什么意义。我只是希望在火上浇灌更多一些乐趣:-)

c# keyword
7个回答
47
投票

对于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 { }
                }
            }
        }
    }
}

36
投票

我想这是无限的。

return null as string as string as string as string as string....

3
投票

这里是另一个案例,你想怎么长就怎么长。

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 // ...

1
投票
internal protected static volatile string foo = "bar";

这就是5。


0
投票

还有一个变种的方法定义(我同事找到的)。

protected internal override sealed unsafe async void await() { ... }

一共有8个关键字 使用的事实是 await 是一个上下文关键字,所以它可以被重复使用在方法名上。


0
投票
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个方法。不知道是否可以在方法声明中加入更多的内容。


-2
投票

我可以作弊吗?

internal protected static volatile StringBuilder @string = 
  new StringBuilder(int.Parse("12"));

使用事实上,我可以使用关键字或其他保留的术语作为变量名,如果我在它前面加上@ -来在9,如果你允许StringBuilder的重复。

© www.soinside.com 2019 - 2024. All rights reserved.