为什么在调用扩展方法时不能使用隐式转换?这是示例代码:using System;namespace IntDecimal{ class Program { static void Main(string[] args) { decimal d = 1000m; int i = 1000; d = i; // implicid conversion works just fine Console.WriteLine(d.ToNumberString()); // Works as expected Console.WriteLine(i.ToNumberString()); // Error Console.WriteLine(ToNumberString2(i)); // Implicid conversion here works just fine } static string ToNumberString2(decimal d) { return d.ToString("N0"); } } public static class Ext { public static string ToNumberString(this decimal d) { return d.ToString("N0"); } }}我得到的错误:“int”不包含“ToNumberString”的定义,最好的扩展方法重载“Ext.ToNumberString(decimal)”需要“decimal”类型的接收器正如我们所见。当我们不将它用作扩展方法时,存在从 int 到十进制的隐式转换并且工作得很好。我知道我可以做些什么来使事情正常工作, 但是在使用扩展方法时无法进行隐式转换的技术原因是什么?
2 回答
- 2 回答
- 0 关注
- 149 浏览
添加回答
举报
0/150
提交
取消