为什么C#编译器认为我在使用可为空的long时尝试使用sbyte重载?

萨姆·阿鲁斯塔米扬

以下代码

long? long1 = 1;
long? long2 = 2;
Math.Min(long1.Value, long2);

这两个参数都将导致以下错误消息:

  • “参数1:无法从'long'转换为'sbyte'”
  • “论点2:无法从“多头”转换?到“ sbyte””

我了解为什么这是一个错误,我知道如何解决该错误。

我的问题是,为什么编译器会Math.Min(sbyte, sbyte)在这种情况下尝试选择重载(即使第一个参数不是可为空的情况)?

尤里·法克托罗维奇(Yuriy Faktorovich)

它找不到正确的重载,因此它默认为Math.cs中的第一个,恰好是 public static sbyte Min(sbyte val1, sbyte val2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不可为空的引用类型:为什么编译器认为我的对象可为空?

为什么C#编译器使用无效方法的重载?

为什么C#编译器允许空枚举?

如何告诉编译器我的可为空的 c# 泛型约束?

为什么当我使用重载的赋值运算符时却出现错误,却没有使用编译器提供的运算符?

为什么我的编译器在 C++ 中使用动态分配的内存时给我错误

罗马为什么在尝试编译时认为我的文件为空?

C#浮点文字:为什么编译器不默认为左侧变量类型

使用LINQ方法Any()时,为什么C#编译器会创建私有DisplayClass,如何避免呢?

为什么golang编译器认为变量已声明但未使用?

Sun为什么不使用C#到Java字节码编译器?

为什么即使使用属性“ SpecialName”,C#编译器也会生成错误

当我尝试覆盖静态方法时,为什么编译器没有抱怨?

为什么Scala编译器不允许使用默认参数重载方法?

尝试在Gradle中使用自定义Kotlin编译器插件时,为什么会出现UnknownPluginException?

为什么在尝试使用C ++ 11样式初始化对象数组时编译器隐式删除构造函数

为什么C#编译器不认为这种泛型推断是模棱两可的?

当我不使用库时,为什么编译器会给我错误“未定义的外部符号”?

每当我尝试使用函数时,我总是收到编译器错误

为什么在使用decltype时,编译器为什么不推断成员的类型?

为什么我的Xcode编译器告诉我即使使用类也使用值类型?

为什么编译器认为我的对象声明是函数声明?

为什么要添加尝试!写!停止未使用的代码编译器警告?

当我尝试使用 cl.exe 作为编译器时 Makefile 返回错误

为什么此代码段适用于C ++ 17,而编译器在使用C ++ 11时却抱怨呢?

C#7.3枚举约束:为什么我不能使用可为空的枚举?

为什么使用 Sonar Scanner 会阻止 C# 编译器创建 Razor Views 程序集?

为什么我的 C++ 图形程序没有使用 g++ 编译器显示任何输出?

当我们尝试将变量除以零时,为什么编译器没有显示错误