Tôi sử dụng báo cáo sử dụng cho SqlConnection
. Nó là tốt cho hiệu suất bởi vì các lực lượng gọi Dispose() mà chỉ đơn giản là phát hành kết nối với hồ bơi sớm hơn.Câu lệnh sử dụng có thể được thay thế bằng dấu ngoặc nhọn không?
Tuy nhiên, tôi nhận ra rằng đối tượng được tạo trong sử dụng không thể được định nghĩa lại. Tôi không thể làm như thế này:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
tôi đã tự hỏi nếu tôi có thể thay thế sử dụng, và làm điều gì đó như thế này:
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
//...
connection = new SqlConnection(connectionString2);
//...
connection = new SqlConnection(connectionString3);
}
Các SqlConnection
sẽ không được truy xuất sau }
cú đúp cuối cùng. Sẽ là Dispose() được gọi là ngay lập tức khi đối tượng đi ra khỏi phạm vi?
Cảm ơn. Nếu nói đến kết nối đóng cửa, tất nhiên tôi sẽ gọi connection.Close() nhưng tôi không viết nó trong đoạn mã trên. – nan
Thậm chí nếu bạn gọi Close() một cách rõ ràng, ví dụ thứ hai của bạn vẫn có khả năng để lại một kết nối mở nếu một ngoại lệ xảy ra. Không chỉ sử dụng cuộc gọi Dispose khi thực hiện rời khỏi khối đó, nó cũng gọi nó khi một ngoại lệ xảy ra. – ThatBlairGuy