私が見つけることができるすべてのオンライン例はusing
、使用中の括弧内で直接 C# のインスタンス化を行います。
using (var cnx = new SqlConnection()) { }
以下は同じように動作するはずだと思いますが、まだリソースがロックされているようです:
SqlConnection GetConnection() { return new SqlConnection(); }
void foo()
{
using (var cnx = GetConnection()) { }
}
プログラムをステップ実行して、using の右中括弧の次の行に到達すると、SQL Server Management Studio を使用して任意の方法でデータベースを変更できると期待していましたが、できませんでした。アプリを閉じると、エラーはなくなります。
これは SQL に分離されていません。私はまた、この方法でファイル ストリームを開くことでこれを経験しました。つまり、using
ブロックを通過しますが、OS は外部アプリがファイルを変更することを許可しません。
using
契約の一部に違反していますか?