Поскольку оператор C # using - это всего лишь синтаксический сахар для try / finally {dispose}, почему он принимает несколько объектов, ТОЛЬКО ЕСЛИ ОНИ ОДНОГО ТИПА?
Я не понимаю, так как все, что им нужно, это IDisposable. Если все они реализуют IDisposable, все должно быть хорошо, но это не так.
В частности, я привык писать
using (var cmd = new SqlCommand())
{
using (cmd.Connection)
{
// code
}
}
который я сжимаю в:
using (var cmd = new SqlCommand())
using (cmd.Connection)
{
// code
}
и я хотел бы дополнительно сжать в:
using(var cmd = new SqlCommand(), var con = cmd.Connection)
{
// code
}
но я не могу. Я мог бы, возможно, некоторые сказали бы, написать:
using((var cmd = new SqlCommand()).Connection)
{
// code
}
, поскольку все, что мне нужно, - это соединение, а не команда, но это не имеет значения.