Я просто читал ТАК вопрос на Python и заметил отсутствие круглых скобок в для цикла. Посмотревший хороший мне, затем я задался вопросом: почему C# требует их?
Например, я в настоящее время должен писать:
if (thing == stuff) {
}
и
foreach (var beyonce in allthesingleladies) {
}
Таким образом, я задаюсь вопросом, почему я не могу записать:
if thing == stuff {
}
Существует ли синтаксическая неоднозначность в том операторе, о котором я не знаю?
PS, странно, фигурные скобки могут быть дополнительными для острот:
if (thing == stuff)
dostuff();
Это синтаксическая «особенность», восходящая к C и, возможно, к какому-то языку до этого.
По сути, это был выбор между
if (condition) statement;
и
if condition then statement;
. В то время, когда зародился C, трендом были более короткие обозначения и меньшее количество ключевых слов.
[Я знаю, что я, вероятно, обиделся на нее, но я все равно должен сказать это]
Как программист преимущественно vb это одна вещь, которая раздражает меня до костей.На мой взгляд, скобки должны быть необязательными, а фигурные скобки - обязательными. Если просить слишком много, Microsoft может «позаимствовать» из vb в C #, введя в C # эквивалент Then.
Но зачем тогда беспокоиться? Microsoft разработала C # на основе C, C ++ и Java, каждый из которых помещает условие if в скобки, так почему же C # должен отличаться?
Edit
Честно говоря, я думаю, что это основано на принятии C # 4 необязательных и именованных параметров , функция, которая всегда была в VB (по крайней мере, с VB6), следующий выпуск C # (то есть C # 5.0) может также представить «новую» функцию, чтобы вам не приходилось вводить ненужные скобки.
Поскольку существует троичное условие if? truePart: falsePart
, наличие if condition, then something
или для тех, кто не знаком с C #, выглядящим как vb, if condition do something
было бы неплохой идеей.
Кстати, если бы у меня были мои druthers, я бы разрешил один оператор вне скобок: начальный восклицательный знак. Меня раздражает, что тестирование кода для сложных отрицательных условий заканчивается лишним набором скобок по сравнению с тестированием кода для сложных положительных условий.
Это выбор языка дизайна, пришедший из Java, который, в свою очередь, произошел от C ++, который, в свою очередь, произошел от C, который, в свою очередь, произошел от ???
Python не нуждается в скобках в качестве отступа показывает намерение. F # делает то же самое. Это хорошая идея (ИМО).
Проще говоря, это связано с тем, как C / C ++ / C # обрабатывает пробелы. Вам нужен какой-то разделитель, поскольку операторы могут занимать несколько строк. Вам также нужен способ «блокировать» или группировать операторы в блок.
Если ваш конкретный вопрос, вы используете () для создания выражения. Следовательно, вам нужен способ сообщить компилятору, что вы закончили с выражением, поскольку {} (блокирующие разделители) не требуются.