c# - 为什么我不经常看到更严格的范围界定?

标签 c# java c scope curly-braces

我发现自己经常限制范围。我发现它使代码更清晰,并允许我更容易地重用变量。这在必须在新作用域的开头声明变量的 C 语言中特别方便。

这是我的意思的一个例子。

{
        int h = 0;
        foreach (var item in photos)
        {
            buffer = t.NewRow();
            h = item.IndexOf("\\x\\");
            buffer["name"] = item.Substring(h, item.Length - h);
            t.Rows.Add(buffer);
        }
}

在这个例子中,我限制了 h 的范围,没有在每次迭代中都初始化它。

但我没有看到很多其他开发人员经常这样做。这是为什么?这样做有什么缺点吗?

最佳答案

好吧,在这种情况下,您无论如何都会在每次迭代中分配一个新值,而不使用“旧”值 - 所以我会使用:

foreach (var item in photos)
{
    buffer = t.NewRow();
    int h = item.IndexOf("\\x\\");
    buffer["name"] = item.Substring(h, item.Length - h);
    t.Rows.Add(buffer);
}

我发现,如果我尽可能积极地这样做(当然是在合理范围内),我就不会遇到太多的范围界定问题——如果我这样做了,这可能意味着该方法太长而且无论如何我都应该重构它。

我敢说它在旧式 C 中很有用——但是当我编写 C# 时,我认为没有理由去做在 C 中有用但不改进我的 C# 的事情:)

关于c# - 为什么我不经常看到更严格的范围界定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067427/

相关文章:

java - Netbeans 中奇怪的 System.out.print 行为

c# - 如何在 C# 中发送任意 FTP 命令

c# - 无法让 Ninject.Extensions.Conventions 工作

java - 组装嵌入式组件异常 'exceptiondisplay'

java-无法访问 ActiveX 应用程序 "com.jacob.com.ComFailException: Can' t 从 progid 获取对象 clsid”

c - 使用 while 循环打印每行 10 个字符的 Ascii 表

c# - 如果方法抛出异常,则更改文本 block 的前景

c# - decimal 和 decimal 上的空合并运算符

c - 尝试在C中使用宏

c - 在字符矩阵中搜索特定单词