C#'中的表达式;s using语句
C#参考手册将使用语句的语法定义为:C#'中的表达式;s using语句,c#,expression,using-statement,C#,Expression,Using Statement,C#参考手册将使用语句的语法定义为: using-statement: using ( resource-acquisition ) embedded-statement resource-acquisition: local-variable-declaration expression 有人能给我举个例子,在using语句中使用一个表达式吗。 常规示例使用变量声明。示例: //Create the file. using (FileStream f
using-statement:
using ( resource-acquisition ) embedded-statement
resource-acquisition:
local-variable-declaration
expression
有人能给我举个例子,在using语句中使用一个表达式吗。
常规示例使用变量声明。示例:
//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());
}
}
//创建文件。
使用(FileStream fs=File.Create(path))
{
AddText(fs,“这是一些文本”);
AddText(fs,“这是更多的文本”);
AddText(fs,“\r\n这是一个新行”);
AddText(fs,“\r\n\r\n以下是字符的子集:\r\n”);
对于(int i=1;i<120;i++)
{
AddText(fs,Convert.ToChar(i.ToString());
}
}
说明:
提供方便的语法,确保正确使用IDisposable对象
using语句在块的和处对对象调用Dispose方法
即使引发异常,它也将调用Dispose方法。示例:
//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());
}
}
//创建文件。
使用(FileStream fs=File.Create(path))
{
AddText(fs,“这是一些文本”);
AddText(fs,“这是更多的文本”);
AddText(fs,“\r\n这是一个新行”);
AddText(fs,“\r\n\r\n以下是字符的子集:\r\n”);
对于(int i=1;i<120;i++)
{
AddText(fs,Convert.ToChar(i.ToString());
}
}
说明:
提供方便的语法,确保正确使用IDisposable对象
using语句在块的和处对对象调用Dispose方法
即使引发异常,它也将调用Dispose方法。使用表达式的示例如下:
var stream = new MemoryStream();
using(stream)
{
//Perform operations with stream here.
}
//Stream is now disposed.
这里,流
变量在using外部声明,但由using包装。完成后,它将处理流
变量
这不是一种非常常见的模式,但它对于您可能需要在资源被处置后对其执行其他操作的位置非常有用
这可以用于方法调用等。基本上,任何计算结果为IDisposable
类型的表达式都可以使用。一般来说,在using语句中没有对IDisposable
的访问权并没有多大用处
我见过的唯一一个以这种方式使用它的场景是在ASP.NETMVC中,它使用了表单帮助程序,如
@using(Html.BeginForm())
{
@Html.TextBox("Name");
}
使用表达式的示例如下所示:
var stream = new MemoryStream();
using(stream)
{
//Perform operations with stream here.
}
//Stream is now disposed.
这里,流
变量在using外部声明,但由using包装。完成后,它将处理流
变量
这不是一种非常常见的模式,但它对于您可能需要在资源被处置后对其执行其他操作的位置非常有用
这可以用于方法调用等。基本上,任何计算结果为IDisposable
类型的表达式都可以使用。一般来说,在using语句中没有对IDisposable
的访问权并没有多大用处
我见过的唯一一个以这种方式使用它的场景是在ASP.NETMVC中,它使用了表单帮助程序,如
@using(Html.BeginForm())
{
@Html.TextBox("Name");
}
实际上,要看的关键是第8.5.1节中的
局部变量声明的定义
局部变量声明声明一个或多个
更多的局部变量
局部变量声明:
局部变量类型
局部变量声明器
局部变量类型:
类型
变量
局部变量声明器:
局部变量声明器
局部变量声明器,局部变量声明器
局部变量声明符:
标识符
标识符=局部变量初始值设定项
局部变量初始值设定项:
表达式
数组初始值设定项
因此,局部变量声明
可以表示为type identifer=expression
。因此,使用的规范告诉您的是,您可以以var variableName=xxxxxxx
的形式声明变量,也可以只使用xxxxxx
部分本身。要看的关键问题实际上是第8.5.1节中的局部变量声明的定义
局部变量声明声明一个或多个
更多的局部变量
局部变量声明:
局部变量类型
局部变量声明器
局部变量类型:
类型
变量
局部变量声明器:
局部变量声明器
局部变量声明器,局部变量声明器
局部变量声明符:
标识符
标识符=局部变量初始值设定项
局部变量初始值设定项:
表达式
数组初始值设定项
因此,局部变量声明
可以表示为type identifer=expression
。因此,使用的规范告诉您的是,您可以以var variableName=xxxxxxx
的形式声明一个变量,或者您可以只使用xxxxxx
部分本身。另一个表达式的示例,我在这里没有提到:
IDisposable disposable;
using (disposable = new SomeDisposableObject()) {
// do something
}
或
引用不必是IDisposable
类型,它可以是实现它的任何类型。这里没有提到的表达式的另一个示例是:
IDisposable disposable;
using (disposable = new SomeDisposableObject()) {
// do something
}
或
引用不必是IDisposable类型,它可以是实现它的任何类型。var res=GetResource();使用(res){…}
不建议使用此样式,因为res
在using
块之后仍在作用域中,但已被释放。因此,仅使用标识符?对我来说,语法看起来非常宽松,而且在语法层面上,似乎所有表达式都是允许的。@Ali:“只有一个标识符?”——正如你所说的,这是一个表达式。当然,它是!我想知道是否允许有更复杂的,比如条件表达式。是的,它们是。任何表达都是允许的