Почему #region-это директива, а не комментарий? [закрытый]
Я предполагаю ,что # region игнорируется и отбрасывается компилятором, так почему это директива препроцессора, а не какая-то структура комментариев (например, //REGION NAME: stuff(); //ENDREGION NAME или что-то еще.) Есть ли какая-то особая причина, по которой было принято решение сделать его директивным?
1 ответ:
Я знаю, что это не прямой ответ, но именно так он изложен в спецификации языка C# (§2.5).
Директивы предварительной обработки обеспечивают возможность условно пропустить разделы исходных файлов, чтобы сообщить об ошибке и предупреждающих условиях, и разграничить отдельные области исходного кода.
Я не думаю, что это игнорируется компилятором, это просто не имеет никакого эффекта. Это все еще считается условной компиляцией с точки лексической обработки и, следовательно, в соответствии с некоторыми другими директивами предварительной обработки. Из спецификации:
Лексическая обработка области:
#регион
...
#endregion
Точно соответствует лексической обработке директивы условной компиляции вида:
#если true
...
#endif