C#参考手册将使用语句的语法定义为:
using-statement:
using ( resource-acquisition ) embedded-statement
resource-acquisition:
local-variable-declaration
expression有人能给我提供一个用语句内部表达式的例子吗?传统的例子是使用变量声明。
发布于 2014-10-03 00:29:52
使用表达式的示例如下:
var stream = new MemoryStream();
using(stream)
{
//Perform operations with stream here.
}
//Stream is now disposed.在这里,stream变量是在using之外声明的,但是由the包装。然后,它将在完成后释放stream变量。
这不是一种非常常见的模式,但对于您可能需要在资源被释放后对其执行其他操作的地方来说,它非常有用。
这可以与方法调用一起使用,基本上任何计算为IDisposable类型的表达式都可以使用。通常,在using语句中不能访问IDisposable并不那么有用。
我看到它以这种方式使用的唯一场景是在ASP.NET MVC中使用表单帮助器,例如。
@using(Html.BeginForm())
{
@Html.TextBox("Name");
}发布于 2014-10-03 00:21:43
举个例子:
//Create the file.
using (FileStream fs = File.Create(path))
{
AddText(fs, "This is some text");
AddText(fs, "This is some more text,");
AddText(fs, "\r\nand this is on a new line");
AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");
for (int i=1;i < 120;i++)
{
AddText(fs, Convert.ToChar(i).ToString());
}
}解释:
提供一个方便的语法,以确保正确使用IDisposable对象。
using语句调用块和块的对象上的Dispose方法。
即使抛出异常,它也将调用Dispose方法。
发布于 2014-10-03 01:03:16
要看的关键是8.5.1节中local-variable-declaration的定义。
局部变量声明声明一个或多个局部变量. 局部变量声明: 局部变量类型 局部变量类型: 类型 变量 局部变量声明器: 局部变量声明器 局部变量声明器 局部变量声明器: 标识符 标识符=等分局部变量初始化器 局部变量初始化器: 表达式 阵列初始化器
因此,local-variable-declaration可以表示为type identifer = expression。因此,using规范告诉您的是,您可以以var variableName = xxxxxxx的形式声明一个变量,也可以只使用xxxxxx部件本身。
https://stackoverflow.com/questions/26171464
复制相似问题