Почему #region-это директива, а не комментарий? [закрытый]


Я предполагаю ,что # region игнорируется и отбрасывается компилятором, так почему это директива препроцессора, а не какая-то структура комментариев (например, //REGION NAME: stuff(); //ENDREGION NAME или что-то еще.) Есть ли какая-то особая причина, по которой было принято решение сделать его директивным?

1 2

1 ответ:

Я знаю, что это не прямой ответ, но именно так он изложен в спецификации языка C# (§2.5).

Директивы предварительной обработки обеспечивают возможность условно пропустить разделы исходных файлов, чтобы сообщить об ошибке и предупреждающих условиях, и разграничить отдельные области исходного кода.

Я не думаю, что это игнорируется компилятором, это просто не имеет никакого эффекта. Это все еще считается условной компиляцией с точки лексической обработки и, следовательно, в соответствии с некоторыми другими директивами предварительной обработки. Из спецификации:

Лексическая обработка области:

#регион

...

#endregion

Точно соответствует лексической обработке директивы условной компиляции вида:

#если true

...

#endif