我正在寻找一种方法来实现这样的东西:
#if CSHARP_COMPILER_IS_FOR_CSHARP_6_OR_HIGHER
foo?.Bar();
#else
if (foo != null)
{
foo.Bar();
}
#endif
当然,我可以自己定义一个条件编译符号,但它不合适。
有没有内置常量?
我发现的问题相当陈旧。也许,东西都变好了?
最佳答案
没有,据我所知他们没有改变任何东西:-)
您也许可以在 csproj 中做一些魔术来定义常量……但它很复杂……
没有直接指定 CSC 版本的属性...有一个属性 ($(LangVersion)
) 指定所需语言标准的版本...但它是通常设置为 default
所以“编译器支持的最大值”...
或者您可以查看 CSC 编译器的路径...它存储在 CscToolPath
中,如果为空,则存储在 MsBuildToolsPath
中。从那里也许您可以辨别 CSC 的版本。
关于c# - 取决于编译器版本的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983262/