違いは何ですか :
ケース 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
ブロック内のリーダー変数の下に警告行が表示され、次のような警告が表示されます。
using
orlock
ステートメントの引数であるローカル '変数' への代入が正しくない可能性があります。呼び出しまたはロック解除はDispose
、ローカルの元の値で行われます。
http://msdn.microsoft.com/en-us/library/zhdyhfk6%28v=vs.90%29.aspx
using
ケース 2 :変数が読み取り専用アクセスに制限されているため、コンパイラ エラーが発生します。
を使用する必要性を無視するとref
、これは、ケース 1 でreader
変数が破棄されない、または少なくとも「期待どおりに」破棄されることを意味しますか? ケース 1 ではコンパイル エラーが発生しないのに、ケース 2 ではエラーが発生するのはなぜですか?