ASP.Net C # # if / endif (как использовать) - PullRequest
0 голосов
/ 23 сентября 2018

После этой статьи ( Страницы Razor ASP.Net Core 2.1) ) У меня возникла проблема с моим кодом.Посетив репозитории GitHub для страницы Student \ Student.cshtml.cs, автор загрузил страницу, полную операторов # if / # endif, но не объяснил (в статье), как они используются.( Вот пример документа )

Похоже, что единственные ссылки, которые возвращаются при поиске, указывают мне на Miscrosoft.com.(Несмотря на посещение многих ссылок, я все еще в растерянности из-за того, как они работают - говорить много вещей, фактически ничего не говоря, похоже, тенденция Microsoft)

То, что я обнаружил, подразумевает, что # If /#endif операторы ищут значения, которые были определены где-то в файле конфигурации?Но пример кода не имеет (очевидно очевидной для меня) ссылки на файл конфигурации.

Не могли бы вы рассказать мне, как работает этот пример кода?Я хочу убедиться, что могу устранить операторы # if / # Endif как возможную причину для моих проблем.Спасибо

1 Ответ

0 голосов
/ 23 сентября 2018

#if и #endif являются директивами препроцессора C #.Директивы препроцессора C # используются для помощи в условной компиляции.

Если в случае исходного кода, на который вы ссылаетесь, строка 29 имеет #if SortFilterPage, а #else - строка 33 и #endif на строка 35 .Строка 29 означает, что если SortFilterPage определено, то компиляция будет включать в себя строки с 30 по 32 и не включать в себя строку 34. Аналогично, скомпилированный код будет включать в себя строки от 117 до 168.

С другой стороны, если SortFilterPage не было определено во время компиляции, то строки с 30 по 32 не будут включены для компиляции, как и строки с 117 по 168, но строка 34 будет.

Как вы заметили, SortFilterPage фактически определяется в исходном коде директивой #define в строка 1 .Но вы можете удалить это определение и вместо этого определить его при запуске компиляции с помощью инструмента построения командной строки .

Вы можете изменить строку 1, чтобы вместо нее было #define SortFilter.Это будет означать, что SortFilterPage будет неопределенным (при условии, что он не был определен при компиляции через инструмент командной строки).В этом случае изменилось бы, какие строки включены для компиляции.Например, строки с 81 по 114 будут включены в скомпилированный код.

Дополнительные показания:

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