C#中是否可以使用#if比较小于或大于的值?

4
在C#中,是否有一种方法可以使用#if指令将一个值与小于或大于运算符进行比较?
例如:
#if GAME_SDK_VERSION < 500

#else

#endif

编辑 我看到了重复的问题链接,但它并没有清楚地回答我如何使用大于或小于符号的简单问题。我认为这个问题很有价值,连同给出的答案一起可以独立存在。


1
不,你只能定义编译时符号。它们没有固有的值。 - Jeff Mercado
1
可能是[在C#中编译时检查条件编译符号的重复(请参见示例)](https://dev59.com/YVDTa4cB1Zd3GeqPL8JU),还有https://dev59.com/rG865IYBdhLWcg3wYNjj的重复。 - l'L'l
1个回答

3
不行。引用自文档
“与C和C++不同,您不能将数字值分配给符号;在C#中,#if语句是布尔型的,只测试符号是否已定义。”
作为一种解决方法,我使用了代表“大于或等于X”的符号,例如对于版本3,我会定义类似于VER_GTE_1VER_GTE_2VER_GTE_3的内容。另一种选择是仅定义当前版本并在#if中使用长列表的||
这对于非常大的数字很快变得不可行。也许最好的方法是尽可能避免预处理器指令,我认为C#在这方面比C/C++有更好的机会。

谢谢。目前我正在使用#if和||处理Unity版本问题,这会变得很复杂,特别是在版本之间有API更改的情况下,比如4.2和4.3等。 - jjxtra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接