在C#中,您可以在未附加到任何其他语句的方法中创建块.
public void TestMethod() { { string x = "test"; string y = x; { int z = 42; int zz = z; } } }
此代码编译并运行,就像主方法中的大括号不存在一样.还要注意块内部的块.
有没有这种情况有价值?我还没有找到,但我很想知道其他人的发现.
范围和垃圾收集:当您离开未连接的块时,其中声明的任何变量都超出范围.这让垃圾收集器可以清理这些对象.
Ray Hayes指出.NET垃圾收集器不会立即收集超出范围的对象,因此范围界定是主要的好处.