Ami*_*yan 0 c# ecma visual-studio
如何根据ECMA-334标准强制Visual Studio(C#)编译源代码?
例如,以下代码在ECMA-334标准中无效:
foreach (var item in custQuery)
{
Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}
Run Code Online (Sandbox Code Playgroud)
因为var不是ECMA-334标准关键字.我希望VS在这些情况下警告我.
您可以使用"语言版本"选项(在命令行中也称为langversion).它位于构建选项卡上,位于高级选项下.在这种情况下,您可以选择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 ) );
}
}
Run Code Online (Sandbox Code Playgroud)
设置langversion到C#1.0(ISO-1)禁止将其作为泛型的使用,但在该版本的编译器中它是合法的.