Tag: preprocessor directive

我可以根据.NET框架版本制作预处理程序指令吗?

这是我想要做的具体例子。 考虑string.Join函数。 在.NET 4.0之前,只有两个重载,两个都需要一个string[]参数。 从.NET 4.0开始,新的重载采用了更灵活的参数类型,包括IEnumerable 。 我有一个库,其中包含一个基本上与.NET 4.0 string.Join函数string.Join函数。 我只是想知道我是否可以使这个function的实现依赖于目标.NET框架。 如果是4.0,它可以简单地string.Join内部调用string.Join 。 如果是3.5或更早,它可以调用自己的内部实现。 这个想法有意义吗? 如果它确实有意义,最合乎逻辑的方法是什么? 我想我只是假设预处理程序指令最有意义,因为在使用早于4.0的.NET版本时,使用IEnumerable参数调用string.Join时甚至无法编译 ; 所以无论我使用什么方法都必须在编译之前进行。 (例如,在运行时检查Environment.Version属性将不起作用。)

何时在.net中使用预处理程序指令?

我认为这是一个简单的问题所以我认为我错过了一些明显的东西。 我真的没有使用预处理器指令,但我正在查看某人的代码,并且认为这是我应该熟悉的东西。 所以我看了msdn示例,它有代码: #define DEBUG // … #if DEBUG Console.WriteLine(“Debug version”); #endif 我的两个问题是: 在上面的例子中,为什么他们定义DEBUG? 如果你在debug v。发布模式下编译,我的印象是设置的? 查看具有#define MYTEST的另一个示例,然后根据它是否“定义”写入控制台,但这与仅使用变量有何不同? 我在这里想念的是什么?