Когда дело доходит до операторов using
в C # (не путать с using
директивами, которые импортируют пространства имен), Visual Studio не делает отступ в однострочном коде, который следует за ним, если не используются фигурные скобки. Это типично для «вложенности» операторов с использованием, как показано в этом вопросе SO.
Меня сбивает с толку то, что последующие операторы после using
не имеют отступа, в отличие от форматирования оператора if
:
// non-indented using statement
using (var myResource = new SomeIDisposableResource())
myResource.Indent(false);
// indented if statement
if (something == true)
IndentMe();
Есть ли причина не делать отступы или это просто предпочтение?
// indented using statement, but not the default VS formatting
using (var myResource = new SomeIDisposableResource())
myResource.Indent();
РЕДАКТИРОВАТЬ:
Дальнейшее тестирование показывает, что я ошибался в некоторых аспектах форматирования VS. Если вы наберете оператор using:
using (var myResource = SomeIDisposableResource())
... и нажмите Enter, курсор выровняется с using
. Если следующая строка также является оператором using, она продолжит выравнивание. Если это не так, VS сделает отступ после завершения. Таким образом, мой исходный вопрос несколько недействителен, потому что мой первый пример на самом деле недостижим, если вы не переопределите форматирование по умолчанию или не используете IDE, которая этого не делает.
Тем не менее, стоит знать, что несколько операторов using
лучше всего рассматривать как один блок, потому что с технической точки зрения это так. Отсутствие отступов применяется только тогда, когда операторы являются последовательными операторами using
без фигурных скобок; и когда к этому привыкаешь, они перестают выглядеть такими необычными.
Как всегда, спасибо всем, кто ответил за понимание и опыт даже в этих незначительных деталях программирования.
using
и вызовmyResource.Indent()
в одной строке. Хотя в данном случае я предпочитаю брекеты. Хотя я не особо возражаю противif (something == true) IndentMe();
как однострочного. - person Brian   schedule 14.09.2010using
. - person JYelton   schedule 15.09.2010