任何人都可以解释这个有趣的C#问题吗?
发布时间:2020-12-15 06:09:28 所属栏目:百科 来源:网络整理
导读:我以前在一个新的控制台应用程序中复制了一个奇怪的问题.我想知道,任何人都可以解释为什么会发生这种情况吗? static void Main(string[] args) { DoSomething(0); Console.Read(); } public static void DoSomething(int? value) { Console.WriteLine("Do S
我以前在一个新的控制台应用程序中复制了一个奇怪的问题.我想知道,任何人都可以解释为什么会发生这种情况吗?
static void Main(string[] args) { DoSomething(0); Console.Read(); } public static void DoSomething(int? value) { Console.WriteLine("Do Something int? called"); } public static void DoSomething(MyEnum value) { Console.WriteLine("Do Something MyEnum called"); } public static enum MyEnum : int { test } } 您在DoSomething行中收到错误:
但是,如果将零更改为任何其他数字,则不会有这样的问题. 解决方法
C#语言规范说明了从整数文字0到任何枚举类型的隐式转换:
因此,任何其他整数文字只能转换为int?因此是明确的;但是文字0可以转换成两个int?和你的枚举 您的枚举中定义了哪些值无关紧要.即使你有一个枚举,如枚举Test {Cats = 7},以上仍然适用.请记住,所有枚举都可以具有其基础整数类型的所有值,并不限于实际声明的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |