早在 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__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