在某些语言中,有类似的东西:
Lisp的:
(let ((x 3))
(do-something-with x))
JavaScript的:
let (x = 3) {
doSomethingWith(x);
}
C#中有这样的东西吗?
答案 0 :(得分:6)
您可以使用大括号限制值类型变量的范围。
{
var x = 3;
doSomethingWith(x);
}
generateCompilerError(x);
最后一行将生成编译器错误,因为x
不再定义。
这也适用于对象类型,但不保证何时对象在超出范围后将被处理。要确保及时处理实施IDisposable 的对象类型,请使用using
:
using (var x = new YourObject())
{
doSomethingWith(x);
}
generateCompilerError(x);
答案 1 :(得分:1)
您可以使用块来命名范围名称。来自C#规范:
8.2块
一个块允许在允许单个语句的上下文中写入多个语句。
阻止:{statement-listopt}
一个块由一个可选项组成 声明列表(第8.2.1节),随附于 括号。如果声明列表是 省略,该块据说是 空。
块可能包含声明 陈述(§8.5)。范围 声明的局部变量或常量 块是块。
在一个区块内,名称的含义 必须在表达式上下文中使用 总是一样的(§7.5.2.1)。