C#3 (Visual Studio2008)引入了对语言(,参见更改12)的破坏性更改,允许将任何文字零隐式转换为枚举。这在很多方面看起来都很奇怪。有人知道为什么这是规范的一部分吗?为什么不是字面上的呢?还是七个?为什么零是特别的?它做出了一些非常违反直觉的重载分辨率选择。例如。F((long)0) == "String" // would have been "0" in VS 2005
F(0) == "Stri
我有一个用c#编写的WCF web服务,我有一个enumpublic enum State [EnumMember.h、.cpp文件,我可以在MFC应用程序中使用这些文件。除了当我将WsStateHungOrBroken传递给web服务时,它不能正确地解释它并简单地将它转换为0。它实际上应该是5,这就是在web服务中定义它的方式。如果有人能向我解释为什么会这样,或者我
出于好奇:为什么我可以将0.0赋值给一个枚举类型的变量,而不是1.0?This line does not compile }我认为数值类型和枚举值之间的转换只允许通过强制转换也就是说,我可以编写Foo value2 = (Foo) 1.0;,以便Main中的第2行可以编译。为什么0.0值在C#中会有例外