博客园  :: 首页  :: 联系 :: 管理

C# 2008 学习笔记 - 部分函数

Posted on 2008-02-19 16:45  sunrack  阅读(215)  评论(0编辑  收藏  举报
一、限制条件
1、只能在部分类中定义
2、返回类型必须void
3、可以是静态或者实例函数
4、可以有参数,修饰符号可以包括this, ref, params ,但是不能使用out
5、总是隐含的定义为private

二、实例

// CarLocator.cs
partial class CarLocator
{
// This member will always be part of the
// CarLocator class.
public bool CarAvailableInZipCode(string zipCode)
{
// This call *may* be part of this method
// implementation.
VerifyDuplicates(zipCode);
// Assume some interesting database logic
// here
return true;
}
// This member *may* be part of the CarLocator class!
partial void VerifyDuplicates(string make);
}


如果没有提供实现代码,该函数和调用代码将不会加入到IL代码中
即:一个方法定义时使用了partial 关键字,则编译器会根据该函数是否实现来决定将该函数便要到最值的程序集(assembly )中
// CarLocator.EventHandler.cs
partial class CarLocator
{
public bool CarAvailableInZipCode(string zipCode)
{

OnZipCodeLookup(zipCode);
return true;
}

// A "lightweight" event handler.
partial void OnZipCodeLookup(string make);
}

三、部分函数的用途
最常用的地方就是所谓的 lightweight events,类的设计者可以为事件使用者提供事件钩子,而事件使用者可以决定实现还是不实现。

// CarLocator.EventHandler.cs
partial class CarLocator
{
public bool CarAvailableInZipCode(string zipCode)
{

OnZipCodeLookup(zipCode);
return true;
}

// A "lightweight" event handler.
partial void OnZipCodeLookup(string make);
}

如果事件使用者需要处理OnZipCodeLookup事件,只需要实现 函数OnZipCodeLookup()既可