一个C#程序如何检测它是否在不支持该程序使用的语言特性的C#版本下进行编译?
当遇到不支持的语言特性时,C#编译器将拒绝该程序并生成一些错误消息。这并没有解决问题,即该程序是使用过时版本的C#编译器编译的,或者是不支持所需C#版本的编译器。
理想情况下,可以简单地:
#if CS_VERSION < 3
#error CSharp 3 or later is required
#end
一个C#程序如何检测它是否在不支持该程序使用的语言特性的C#版本下进行编译?
当遇到不支持的语言特性时,C#编译器将拒绝该程序并生成一些错误消息。这并没有解决问题,即该程序是使用过时版本的C#编译器编译的,或者是不支持所需C#版本的编译器。
理想情况下,可以简单地:
#if CS_VERSION < 3
#error CSharp 3 or later is required
#end
int[] arr1 = { 1, 2, 3, 4, 5 };
string[] arr2 = Array.ConvertAll(arr1, delegate (int i) {return i.ToString();});
简单易懂:如果编译器无法编译代码,它将会失败并显示错误信息。
接下来,您可以基于supportedRuntime定义所需的指令,使用CSharpProjectConfigurationProperties3.DefineConstants。
然后,您可以在VS中创建一个宏来使用此功能。