和有什么区别:
情况1:
var reader = cmd.ExecuteReader();
using(reader)
{
while(reader.read())
{
DoSomething(ref reader);
}
}
案例2:
using(var reader = cmd.ExecuteReader())
{
while(reader.read())
{
DoSomething(ref reader);
}
}
情况 1:不会产生任何编译器错误,但在using
块内的 reader 变量下会显示一条警告行,并且警告说:
可能不正确地分配给作为using
orlock
语句的参数的本地“变量”。调用或解锁将Dispose
发生在本地的原始值上。
http://msdn.microsoft.com/en-us/library/zhdyhfk6%28v=vs.90%29.aspx
using
情况 2:由于将变量限制为只读访问,它会产生编译器错误。
忽略使用的需要ref
,这是否意味着在案例 1 中,reader
变量不会被处理,或者至少“按预期”处理?为什么案例 1 不会产生任何编译器错误,但案例 2 会产生?