C# 可以使用#if 来比较小于或大于的值吗?
Can C# use #if to compare a value with less than or greater than?
在 C# 中是否有任何方法可以使用 #if 指令将值与小于或大于运算符进行比较?
示例:
#if GAME_SDK_VERSION < 500
#else
#endif
EDIT 我看到重复的问题 link 但它没有清楚地解决我使用大于或小于符号的简单问题。我认为这个问题很有价值,连同给出的答案可以独立存在。
不,你不能。引自 the docs:
Unlike C and C++, you cannot assign a numeric value to a symbol; the #if statement in C# is Boolean and only tests whether the symbol has been defined or not.
作为一种解决方法,我使用了表示 "greater than or equal to X" 的符号,例如对于版本 3,我将定义一些效果为 VER_GTE_1
、VER_GTE_2
和 VER_GTE_3
.另一种选择是仅定义当前版本并在 #if
.
中使用一长串 ||
对于非常大的数字,这很快就会变得不可行。也许最好的方法是尽可能避免预处理器指令——我认为 C# 在这方面比 C/C++ 有更好的机会。
在 C# 中是否有任何方法可以使用 #if 指令将值与小于或大于运算符进行比较?
示例:
#if GAME_SDK_VERSION < 500
#else
#endif
EDIT 我看到重复的问题 link 但它没有清楚地解决我使用大于或小于符号的简单问题。我认为这个问题很有价值,连同给出的答案可以独立存在。
不,你不能。引自 the docs:
Unlike C and C++, you cannot assign a numeric value to a symbol; the #if statement in C# is Boolean and only tests whether the symbol has been defined or not.
作为一种解决方法,我使用了表示 "greater than or equal to X" 的符号,例如对于版本 3,我将定义一些效果为 VER_GTE_1
、VER_GTE_2
和 VER_GTE_3
.另一种选择是仅定义当前版本并在 #if
.
||
对于非常大的数字,这很快就会变得不可行。也许最好的方法是尽可能避免预处理器指令——我认为 C# 在这方面比 C/C++ 有更好的机会。