為什么在調(diào)用擴展方法時不能使用隱式轉(zhuǎn)換?這是示例代碼: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”類型的接收器正如我們所見。當(dāng)我們不將它用作擴展方法時,存在從 int 到十進制的隱式轉(zhuǎn)換并且工作得很好。我知道我可以做些什么來使事情正常工作, 但是在使用擴展方法時無法進行隱式轉(zhuǎn)換的技術(shù)原因是什么?
- 2 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消