Так как оператор С# 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
}
так как все, что мне нужно удалить, - это соединение, а не команда, но кроме точки.