C# 3.0 之 Partial Method 的使用

來源:互聯網
上載者:User

早在 C# 2.0 中,便出現了 Partial ,不過那是的 Partial 只能使用在類上,

也就是部分類別,對於部分類別,實用之處還是比較多的,

因為 Partial Method 是建立在 Partial Class 的基礎之上的,

所以在這裡先介紹一下 Partial Class 的使用,

然後再一併介紹 Partial Method ,

對於 Partial Class ,其實也就是將一個類拆分成幾個部分類別,

並且這些部分類別可以寫在不同的類檔案 .cs 中,

比如在一個.cs 中寫完這個 Class 的第一部分,

然後再在另外一個 .cs 中完成這個 Class 的第二部分,

再在另外一個 .cs 中完成這個 Class 的第三部分,

………………..

這個就是部分類別了。

接下來看個樣本便一清二楚了,

由上面的項目視圖可以看出,我已經將一個類分成了四個部分,

然後再在 Demo__3 的 Code-Behind 中對這個類進行執行個體化並且訪問,

先來看看各個 Partial Class 中的代碼吧(非常簡單的)

這個是 Demo__3__Use__PartialMethodOne.cs

public partial class Demo__3__Use__PartialMethod
{
    private string name = "";

    public void MethodOne()
    {
        name += "你來到了 MethodOne 方法<br/>";
    }

    public string GetName()
    {
        MethodOne();
        MethodTwo();
        MethodThree();
        MethodFour();
        return name;
    }
}

這個是 Demo__3__Use__PartialMethodTwo.cs

public partial class Demo__3__Use__PartialMethod
{
    public void MethodTwo()
    {
        name += "你來到了 MethodTwo 方法<br/>";
    }
}

這個是 Demo__3__Use__PartialMethodThree.cs

public partial class Demo__3__Use__PartialMethod
{
    public void MethodThree()
    {
        name += "你來到了 MethodThree 方法<br/>";
    }
}

這個是 Demo__3__Use__PartialMethodFour.cs

public partial class Demo__3__Use__PartialMethod
{
    public void MethodFour()
    {
        name += "你來到了 MethodFour 方法<br/>";
    }
}

然後就只要看一下 Demo__3.aspx 的 Code-Behind 了

using System;

namespace CSharpLanguage
{
    public partial class Demo__3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Demo__3__Use__PartialMethod partialMethod =
                        new Demo__3__Use__PartialMethod();

            Response.Write(partialMethod.GetName());
        }
    }
}

以上就是整個 Demo 的所有代碼了,

再看一下使用 Partial Class 後的結果吧

完成了 Partial Class 的解釋,那麼便開始 Partial Method 了,

事實上,Partial Method 是完全依賴於 Partial Class 實現的,

Partial Method 也就是分部方法了,

分部方法也就是把一個完整的方法拆分成兩個部分,

即方法的定義和方法的實現,

然後再進一步的就可以將這兩個部分放在不同的.cs中了,

比如我有一個方法,

我在這個部分類別中完成這個方法定義,

然後我又在另外的一個部分類別中完成這個方法的實現,

這個就是分部方法了,

很明顯的,分部方法時依賴於部分類別的,

因為你必須在這個部分類別中完成前面的方法定義,

再在另外的一個部分類別中完成後面的方法實現,

所以,可以很明顯的看出,沒有 Partial Class 就不可能有 Partial Method ,

不過,從上面介紹 Partial Class 的例子中可以看出,

Partial Class 也是比較容易的,所以 Partial Method 也理所當然不會難了,

下面就來看一個Demo 吧

Demo__4__Use__PartialOne.cs

public partial class Demo__4__Use__Partial
{
    private string name = "";
    partial void UseName();
    public string GetName()
    {
        UseName();
        return name;
    }
}

Demo__4__Use__PartialTwo.cs

public partial class Demo__4__Use__Partial
{
    partial void UseName()
    {
        name += "這裡使用了 Partial Method 來操縱 name";
    }
}

Demo__4.aspx 的 Code-Behind 中的代碼

using System;

namespace CSharpLanguage
{
    public partial class Demo__4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Demo__4__Use__Partial partialMethod =
                     new Demo__4__Use__Partial();
            Response.Write(partialMethod.GetName());
        }
    }
}

在看一下結果

上面雖然是完整的使用了一次 Partial Class 和 Partial Method ,

但是需要注意的是,使用 Partial Method 還是有諸多限制的,

首先是在聲明 Partial Method 時,必須使用到關鍵字 Partial 來聲明,

然後就是在使用 Partial Method 時,必須經 Partial Class 才能使用,

然後還有使用 Partial Method 時,其在類中的地位只能是 private ,

即是私人成員,在類外部是無法對 Partial Method 進行訪問的,

還有很重要的一點就是 Partial Method 不能夠有傳回值,也就是只能為 void。

                                                             2010—2—01

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.