c# - 作用域 block 的好处?

标签 c#

<分区>

Possible Duplicate:
When do you use code blocks?

好吧,这可能是一个愚蠢的问题,我可能遗漏了一些明显的东西,但随着我慢慢学习 C#,这个问题一直困扰着我一段时间。

下面的代码显然编译得很好:

public void Foo()
{
    {
        int i = 1;
        i++;
    }

    {
        int i = 1;
        i--;
    }
}

我了解 {} block 可用于范围界定。问题是你为什么要这样做?该功能解决了哪些问题?

我看不出使用它们有什么害处,除非它确实增加了更困惑的代码,因为与那些“绑定(bind)”到流控制、迭代等的范围相比,这些类型的范围更容易被忽视。

最佳答案

它在变量声明可能变得困惑的 switch 语句中很有用:

混淆代码:

switch (true)
{
    case true:
        var msg = "This is true.";
        var copy = msg;
        break;

    case false:
        msg = "This is false.";
        copy = msg;
        break;
}

清除代码:

switch (true)
{
    case true:
    {
        var msg = "This is true.";
        var copy = msg;
        break;
    }

    case false:
    {
        var msg = "This is false.";
        var copy = msg;
        break;
    }
}

关于c# - 作用域 block 的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8824207/

相关文章:

c# - 如何更改 ListView 的默认选择颜色?

c# - 如何使用 C# 在 Https POST 上发送参数

c# - 获取两次之间的时间,时间跨度为一小时

c# - 通过 Azure webjobs 从 FTP 服务器获取文件

c# - 如何使用 LINQ 从不同的值列表创建逗号分隔的字符串?

c# - 如何在 C# 中获取 HTMLAgilityPack DOM 元素的边界框?

c# - 数据库中有 1000 多个 Linq 查询或逻辑……哪个更糟?

c# - 如何在不使用过时的 OracleConnection 类的情况下建立 OracleConnection

javascript - 在调用函数 “App.ServisTanimId.getValue”之前如何检查函数0x104567910是否作为属性存在?

c# - 为什么这个二维数组初始化是非法的?