gpt4 book ai didi

c# - 谁能解释这个有趣的 C# 问题?

转载 作者:太空狗 更新时间:2023-10-29 17:32:17 26 4
gpt4 key购买 nike

我之前遇到了一个奇怪的问题,我已经在一个新的控制台应用程序中复制了这个问题。我想知道,谁能解释为什么会这样?

    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 行出现错误:

Error 1 The call is ambiguous between the following methods or properties: 'DoSomething(int?)' and 'DoSomething(MyEnum)'

但是,如果将零更改为任何其他数字,则不会出现此问题。

最佳答案

C# 语言规范声明存在从整数文字 0 到任何枚举类型的隐式转换:

13.1.3 Implicit enumeration conversions

An implicit enumeration conversion permits the decimal-integer-literal 0 to be converted to any enum-type.

因此,任何其他整数文字只能转换为 int?,因此是明确的;但是文字 0 可以转换为 int? 和您的枚举。

枚举中定义了哪些值并不重要。即使您有像 enum Test { Cats=7 } 这样的枚举,上面的内容仍然适用。请记住,所有枚举都可以具有其基础整数类型的所有值,并且不限于实际声明的值。

关于c# - 谁能解释这个有趣的 C# 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com