更新:2007 年 11 月
提供能确保正确使用
示例
下面的示例演示如何使用 using 语句。
C# | 复制代码 |
---|---|
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Users\Public\Documents\test.txt")) { string s = null; while((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } |
备注
按照规则,当使用 IDisposable 对象时,应在 using 语句中声明和实例化此对象。using 语句按照正确的方式调用对象上的
using 语句确保调用
C# | 复制代码 |
---|---|
{ Font font1 = new Font("Arial", 10.0f); try { byte charset = font1.GdiCharSet; } finally { if (font1 != null) ((IDisposable)font1).Dispose(); } } |
可以将多个对象与 using 语句一起使用,但必须在 using 语句中声明这些对象,如以下示例所示:
C# | 复制代码 |
---|---|
using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. } |
可以实例化资源对象,然后将变量传递给 using 语句,但这不是最佳做法。在这种情况下,该对象将在控制权离开 using 块之后保持在范围内,即使它可能将不再具有对其非托管资源的访问权也是如此。换句话说,再也不能完全初始化该对象。如果试图在 using 块外部使用该对象,则可能导致引发异常。由于这个原因,通常最好是在 using 语句中实例化该对象并将其范围限制在 using 块中。
C# | 复制代码 |
---|---|
Font font2 = new Font("Arial", 10.0f); using (font2) // not recommended { // use font2 } // font2 is still in scope // but the method call throws an exception float f = font2.GetHeight(); |
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
5.3.3.17 Using 语句
8.13 using 语句
请参见
修订记录
日期 | 修订 | 原因 |
---|---|---|
2008 年 7 月 | 在介绍后面增加了代码示例。 |
内容 Bug 修复 |