C#的“非信奉者”在問我擴展方法的目的是什么。我解釋說,然后您可以向已定義的對象添加新方法,尤其是當您不擁有/控制原始對象的源時。他提出了“為什么不只是在自己的類中添加方法呢?” 我們一直在走(很好的方式)。我的一般回答是它是工具帶中的另一個工具,而他的回答是這是對工具的無用浪費……但是我認為我會得到一個更“開明”的答案。在哪些情況下使用了擴展方法而又沒有(或不應(yīng)該)使用擴展方法添加到自己的類中?
3 回答

www說
TA貢獻1775條經(jīng)驗 獲得超8個贊
我認為擴展方法在編寫代碼時有很大幫助,如果您將擴展方法添加到基本類型中,則可以在智能感知中快速獲得它們。
我有一個格式提供程序來格式化文件大小。要使用它,我需要寫:
Console.WriteLine(String.Format(new FileSizeFormatProvider(), "{0:fs}", fileSize));
創(chuàng)建一個擴展方法,我可以編寫:
Console.WriteLine(fileSize.ToFileSize());
更干凈,更簡單。

慕桂英4014372
TA貢獻1871條經(jīng)驗 獲得超13個贊
不要忘記工具!當在類型Foo上添加擴展方法M時,您將在Foo的智能感知列表中獲得“ M”(假設(shè)擴展類在作用域內(nèi))。這使得'M'比MyClass.M(Foo,...)更容易找到。
歸根結(jié)底,這只是其他靜態(tài)方法的語法糖,但就像買房一樣:“位置,位置,位置!” 如果它掛在類型上,人們會發(fā)現(xiàn)它!
- 3 回答
- 0 關(guān)注
- 392 瀏覽
添加回答
舉報
0/150
提交
取消