繁体   English   中英

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

[英]Why does the C# compiler think I'm trying to use the sbyte overload when using nullable longs?

以下代码

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

将在两个参数上导致以下错误消息:

  • “参数1:无法从'long'转换为'sbyte'”
  • “争论2:无法转换'长?' ''sbyte'“

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM