Могу ли я использовать #define
preprocessor directive внутри #if
и #endif
, на C#?Действительно ли используется директива препроцессора #define внутри #if в C#
например.
#if !SILVERLIGHT && !__ANDROID__ && !__IOS__
#define SupportsMutex
#endif
Похоже, что это работает, но я должен быть уверен. Об этом много написано, но большую часть времени в контексте C, а не C# - препроцессорные директивы a на C# гораздо более ограничены.
Выделение Visual Studio, похоже, поддерживает его, но это действительно верно в соответствии с спецификациями языка/компилятора?
This MSDN page дает следующее примечание:
Директива #define не может быть использован для объявления постоянных значений, как это обычно делается в C и C++. Константы в C# лучше всего определяются как статические члены класса или структуры. Если у вас есть несколько таких констант, подумайте о создании отдельного класса «Константы» для их хранения.
Мне нужно это, потому что использование #if !SILVERLIGHT && !__ANDROID__ && !__IOS__
несколько раз сложно.
Конечно, мы могли бы также добавить SupportsMutex
к условным символам компиляции проекта, но это сложнее управлять и менее прозрачно.
Спасибо! быстро нашли! – Julian