【发布时间】:2010-12-03 07:12:13
【问题描述】:
在某些语言中,有这样的内容:
语言:
(let ((x 3))
(do-something-with x))
JavaScript:
let (x = 3) {
doSomethingWith(x);
}
C#中有这样的东西吗?
【问题讨论】:
标签: c# binding variables scope
在某些语言中,有这样的内容:
语言:
(let ((x 3))
(do-something-with x))
JavaScript:
let (x = 3) {
doSomethingWith(x);
}
C#中有这样的东西吗?
【问题讨论】:
标签: c# binding variables scope
你可以用大括号限制值类型变量的范围。
{
var x = 3;
doSomethingWith(x);
}
generateCompilerError(x);
最后一行将产生编译器错误,因为不再定义 x。
这也适用于对象类型,但不能保证对象在超出范围后何时被释放。为确保及时处理实现 IDisposable 的对象类型,请使用using:
using (var x = new YourObject())
{
doSomethingWith(x);
}
generateCompilerError(x);
【讨论】:
您可以使用块来限定名称。来自 C# 规范:
8.2 块
一个块允许在允许单个语句的上下文中编写多个语句。
块:{语句列表选择}
一个块由一个可选的 声明列表(第 8.2.1 节),包含在 大括号。如果语句列表是 省略,该块被称为 空的。
块可能包含声明 声明(第 8.5 节)。一的范围 中声明的局部变量或常量 块是块。
在一个块内,一个名字的含义 在表达式上下文中使用必须 始终相同(第 7.5.2.1 节)。
【讨论】: