1. 程式人生 > 其它 >C#神奇的擴充套件方法

C#神奇的擴充套件方法

以前總聽說擴充套件方法擴充套件方法,只是聽說是C#3.0後出來的新玩意,也僅僅是知道Linq中用到好多的擴充套件方法,但是他究竟是個什麼東東,怎麼用它,用它的好處是什麼,總是模模糊糊,那麼我們今天就嘗試揭開它神祕的面紗。

  我們現在看到每個方法都和宣告它的類關聯,但是C#3.0的擴充套件方法的特性擴充套件了這個邊界,允許編寫和宣告它的類之外的類關聯的方法。想要知道如何利用這個特徵,我們先看一個例子:

class MyData
{
    double D1,D2,D3;
    public MyData(double d1,double d2,double d3)
    {
        D1=d1;D2=d2;D3=d3;
    }
    public double Sum()
    {
        return D1+D2+D3;
    }
}

   這是一個非常簡單而且功能有限,但假設它含有另外一個方法會更有用,該方法返回三個資料的平均值.那麼我們有幾種方法可以實現這個增加的功能.

  • 如果我們有原始碼,那麼我們可以直接修改這個類,將方法直接新增進去.
  • 然而,如果我們不能修改這個類,例如,如果這個類在一個第三方的類庫中,那麼只要它不是密封的,那麼我們可以把它當作基類並在派生類中實現這個新增的方法.

  如果我們不能訪問程式碼,或該類是密封的,或有其它設計原因使這些方法不能工作,那麼我們不得不在另外一個類中使用該類的公有可用成員編寫一個方法.

例如,我們可以編寫一個下面程式碼中這樣的類: