【问题标题】:C#: Scope-specific variable bindingC#:特定于范围的变量绑定
【发布时间】:2010-12-03 07:12:13
【问题描述】:

在某些语言中,有这样的内容:

语言:

(let ((x 3))
  (do-something-with x))

JavaScript:

let (x = 3) {
  doSomethingWith(x);
}

C#中有这样的东西吗?

【问题讨论】:

    标签: c# binding variables scope


    【解决方案1】:

    你可以用大括号限制值类型变量的范围。

    {
        var x = 3;
        doSomethingWith(x);
    }
    generateCompilerError(x);
    

    最后一行将产生编译器错误,因为不再定义 x

    这也适用于对象类型,但不能保证对象在超出范围后何时被释放。为确保及时处理实现 IDisposable 的对象类型,请使用using

    using (var x = new YourObject())
    {
        doSomethingWith(x);
    }
    generateCompilerError(x);
    

    【讨论】:

    • 此外,这就是人们所说的“块级范围”
    【解决方案2】:

    您可以使用块来限定名称。来自 C# 规范:

    8.2 块

    一个块允许在允许单个语句的上下文中编写多个语句。

    块:{语句列表选择}

    一个块由一个可选的 声明列表(第 8.2.1 节),包含在 大括号。如果语句列表是 省略,该块被称为 空的。

    块可能包含声明 声明(第 8.5 节)。一的范围 中声明的局部变量或常量 块是块。

    在一个块内,一个名字的含义 在表达式上下文中使用必须 始终相同(第 7.5.2.1 节)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 2021-04-16
      相关资源
      最近更新 更多