为了账号安全,请及时绑定邮箱和手机立即绑定

调用扩展方法时无法进行隐式转换

调用扩展方法时无法进行隐式转换

C#
喵喵时光机 2021-06-29 21:39:21
为什么在调用扩展方法时不能使用隐式转换?这是示例代码: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
提交
取消
意见反馈 帮助中心 APP下载
官方微信