请问,这个代码中的using是啥意思
MSDN上的第一个例子:
http://msdn.microsoft.com/zh-cn/library/db5x7c0d(v=VS.100).aspx
class Test
{
public static void Main()
{
try
{
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
两个问题:
1:using 是什么语法哦,没看到过呢? 不会是引用命名空间吧?
2:StreamReader 是什么东西?给个MSDN链接,
------解决方案-------------------- 代码中的using是对象sr只在using块中使用,系统只能释放sr对象,无需你自己释放
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(VB.USING);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-VB)&rd=true
StreamReader是i/o流读取类
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(SYSTEM.IO.STREAMREADER);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-VB)&rd=true
------解决方案-------------------- using是作用域。
在离开using作用域时会强制调用()内对象的Dispose()方法。
所以()中的对象都必须实现IDisposable接口
实际上编译后就是
try
{
...using作用域内代码
}
finally
{
using()内对象.Dispose();
}
------解决方案-------------------- using语法用于和IDisposable接口配合使用
MSDN的说明
在using语句块执行完毕之后会调用using对象的IDisposable接口的Dispose()方法
对于StreamReader来说,他的Dispose方法会调用Close方法从而关闭文件
using的优势在于,但语句块中抛出异常时,Dispose方法依然会被调用,从而确保无论如何,只要离开该段语句块就一定能够释放资源
------解决方案-------------------- 要类实现了IDisponse接口,就能用using了,表示超出作用域自动调用disponse
StreamRead sr=new StreamRead("***.txt);
using(sr as IDisponse)
{
//Code...
}
这个写法也可以
------解决方案-------------------- 探讨 using语法用于和IDisposable接口配合使用 MSDN的说明 在using语句块执行完毕之后会调用using对象的IDisposable接口的Dispose()方法 对于StreamReader来说,他的Dispose方法会调用Close方法从而关闭文件 using的优势在于,但语句块中抛出异常时,Dispose方法依然会被调用,从而确保无论如何,只要离开该段语句……
------解决方案-------------------- 来晚了,只能曾分了。
------解决方案-------------------- using用来指定一个对象的使用域,当超出using所指定的域空间后,系统会强制性释放对象
------解决方案-------------------- 使用托管,自动释放资源!类似于你上厕所,小便之后会自动放水,冲洗小便池一样的。。你上大便要自己手动按下开水的才会 释放资源。所以用using()就是等于你上小便,做完事情之后系统会自动帮你回收资源,关闭资源。
------解决方案-------------------- 上面说的对,是作用域。
简单点说就是出了这块代码,变量自己释放。
------解决方案-------------------- 里面的东西不用你自己释放
------解决方案-------------------- 作用域
------解决方案-------------------- 楼上说的都对
举个例子:
C# code
using(sqlConnection con=new sqlConnection("连接串"))
{
con.Open();
代码;
//不需要写con.Close();因为当出了using的花括号,con对象就会被自动释放
}
------解决方案--------------------