Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制VisualStudio(C)根据ECMA-334标准编译源代码?_C#_Visual Studio_Ecma - Fatal编程技术网

C# 如何强制VisualStudio(C)根据ECMA-334标准编译源代码?

C# 如何强制VisualStudio(C)根据ECMA-334标准编译源代码?,c#,visual-studio,ecma,C#,Visual Studio,Ecma,如何强制VisualStudioC根据ECMA-334标准编译源代码 例如,以下代码在ECMA-334标准中无效: foreach (var item in custQuery) { Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone); } 因为var不是ECMA-334标准关键字。在这种情况下,我想提醒自己。Visual Studio和.NET Framework附带的编译器在设计上不符合C语言版本发布时的最

如何强制VisualStudioC根据ECMA-334标准编译源代码

例如,以下代码在ECMA-334标准中无效:

foreach (var item in custQuery)
{
    Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}

因为var不是ECMA-334标准关键字。在这种情况下,我想提醒自己。

Visual Studio和.NET Framework附带的编译器在设计上不符合C语言版本发布时的最新版本。尽管有一些选项可以通过项目选项中的C语言级别设置诊断>C-2.0 ECMA-334功能的使用,但这对中断已进行的语言更改没有影响


VisualStudio2005支持C2.0语言。您可以安装免费提供的Express版本。

您可以在命令行中使用Language version(语言版本)选项。它位于“生成”选项卡上的“高级选项”下。对于这种情况,您将选择ISO-2

请注意,这不是向后兼容模式。它只是禁止您使用比指定版本更新的版本中提供的功能

Eric Lippert对langversion选项的用途和目的有着深刻的认识

要注意它不是完全向后兼容模式,请以本文中的示例为例:

class C
{
    public static bool operator < (C c1, C c2) { return true; }
    public static bool operator > (C c1, C c2) { return true; }
    public static bool operator < (bool b1, C c2) { return true; }
    public static bool operator > (bool b1, C c2) { return true; }

    static C H = new C();
    static C I = new C();
    static C J = new C();
    static void G(bool b) { }
    static void Main()
    {
        G ( H < I > ( J ) );
    }
}

将langversion设置为C 1.0 ISO-1会禁止使用泛型,但在该版本的编译器中是合法的。

您看过类似的内容吗?然而,很少有好的理由这样做。按照现代编程语言标准,ECMA-334是古老的。您错过了var、扩展方法、lambda函数、对象初始值设定项、方差、可选参数、wait/async等等。这还不包括C6中所有的好东西