C#:特定于范围的变量绑定

Den*_*gan 2 c# variables binding scope

在某些语言中,有以下内容:

Lisp的:

(let ((x 3))
  (do-something-with x))
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

let (x = 3) {
  doSomethingWith(x);
}
Run Code Online (Sandbox Code Playgroud)

在C#中有这样的东西吗?

Chr*_*isF 6

您可以使用大括号限制值类型变量的范围.

{
    var x = 3;
    doSomethingWith(x);
}
generateCompilerError(x);
Run Code Online (Sandbox Code Playgroud)

最后一行将生成x不再定义的编译器错误.

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

using (var x = new YourObject())
{
    doSomethingWith(x);
}
generateCompilerError(x);
Run Code Online (Sandbox Code Playgroud)