《百家讲坛之ZKK读C#委托》·第一讲
C#是面向对象的程序设计语言,有很多OO的特点,如接口、继承、多态、委托等,我发现这几次课老谢讲委托同学们都很痛苦,所以我在这里用尽量通俗易懂的语言来讲解这个另人发指的东西。委托可以看作是C#的一种新类型,其实就算单按字面上的理解也能解释委托的性质,就是代理,代替某个方法去做某件事情。
1.合法的委托声明:
delegate string GetString();
也可以加上访问修饰符public delegate string GetString();我们在这里合法地声明了一个无参数,返回类型为字符串的一个委托。
如果要声明一个名为MyDelegate的公有的委托,返回类型为Double,具有两个参数均为Long类型,则可声明如下:
public delegate double MyDelegate(long l1,long l2);
2.让我们的委托参与工作:
看下列代码,它诠释了一个最简单的委托的工作流程
public delegate string GetString();
class Class1
{
//结构体Currency
struct Currency
{
public Currency()
{}
public static string GetCurrUnit()
{
return "dddd";
}
}
static void Main(string[] args)
{
int x=11,y=22;
//使委托绑定方法,绑定的方法是类型x的ToString方法,方法后省略参数列表是委托调用的特有格式,
//因为我们声明的委托参数列表为0参数(没有参数),所以和ToString 0参数的重载函数,
//符合我们之前声明的委托,所以委托对象g1绑定的是0参数的ToString
GetString g1 = new GetString(x.ToString);
//以下输出等同于输出x.ToString(),委托替我们完成了ToString将整型x转换为string型的工作
Console.WriteLine(g1());
//委托也可以调用结构体类型的方法,以下语句分别使得委托对象g1绑定的是结构体对象cu的ToString方法
//和GetCurrUnit方法
Currency cu = new Currency();
g1 = new GetString(cu.ToString);
Console.WriteLine(g1());
//因为是静态方法,所以用类名直接引出
g1 = new GetString(Currency.GetCurrUnit);
Console.WriteLine(g1());
Console.ReadLine();
}
}
[ 本帖最后由 zkkpkk 于 2007-4-27 12:25 编辑 ] 今天发放了上月的销售提成 1411 思明论坛!
下次努力哦!……委托是C#独有的新类型,我们若能够灵活运用委托便可以写出地道的C#代码,而想要灵活运用委托,就必须要弄懂委托的特性,下一讲我会通过两个简单的例子来展现委托的工作特性 不幸的你遭到暴徒洗劫!掳去了你 1/4的现金 !(人民政府再次提醒大家有钱要存银行)
下次努力哦!……:handshake
可惜偶从C++ 直接转到VB.net JAVA 等了。.!!1 顶起来,第三讲——委托组播就要出啦:titter 原帖由 dv-Partner 于 2007-4-26 13:24 发表 http://172.16.1.236/images/common/back.gif
:handshake
可惜偶从C++ 直接转到VB.net JAVA 等了。.!!1
C++是底层高级语言的超级无敌霸王3000,C#是中层高级语言的超级无敌霸王3000 楼主你当这个版的版主吧,我正打算去当网络技术的版主 原帖由 眼里只有¥ 于 2007-6-3 20:32 发表 http://172.16.1.236/images/common/back.gif
楼主你当这个版的版主吧,我正打算去当网络技术的版主
觉得当不当一样,不过你有此意的话倒是可以玩玩
页:
[1]