delegate 是什么意思?如何用?

hexiaofeng 2002-03-09 02:40:14
using System;

namespace Ch06Ex05
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
delegate double processDelegate(double param1, double param2);
/*
* delegate 声明定义一种引用类型,该类型可用于将方法用特定的签名封装。
* 委托实例封装静态方法或实例方法。委托大致类似于 C++ 中的函数指针;
* 但是,委托是类型安全和可靠的
*/


static double Multiply(double param1, double param2)
{
return param1 * param2;
}

static double Divide(double param1, double param2)
{
return param1 / param2;
}

static void Main(string[] args)
{
processDelegate process;
Console.WriteLine("Enter 2 numbers separated with a comma:");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos + 1,
input.Length - commaPos - 1));
Console.WriteLine("Enter M to multiply or D to divide:");
input = Console.ReadLine();
if (input == "M")
process = new processDelegate(Multiply);
else
process = new processDelegate(Divide);
Console.WriteLine("Result: {0}", process(param1, param2));
}
}
}
delegate 是什么意思?如何用?
...全文
573 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
karma 2002-03-11
  • 打赏
  • 举报
回复
as long as the signature of function matches
hexiaofeng 2002-03-11
  • 打赏
  • 举报
回复
请问各位 
 

  上面代码 processDelegate 是不是可以指向上面代码任何方法??
hanxiao2000 2002-03-11
  • 打赏
  • 举报
回复
委托,委派,代理,唉,怎么听都别扭,还是delegate好了。
lovejsp 2002-03-11
  • 打赏
  • 举报
回复
Ninputer翻译是比较好些,不过委托也有很多的说法. :)
Ninputer 2002-03-11
  • 打赏
  • 举报
回复
无法找到,这是大量文档积累的经验。注意,通常最新的MSDN中文版中并不是完全正确的翻译方法
gigix 2002-03-11
  • 打赏
  • 举报
回复
请问Ninputer(装配脑袋):
你说是“MS官方译法”,请问这些官方译法在哪里可以找到?
karma 2002-03-09
  • 打赏
  • 举报
回复
I think the concept of delegate was invented by Anders Hejlsberg, first in VJ++ and then in C#. Anders Hejlsberg invented Delphi

check out these two articles in MSDN magazine:
Implementation of Events with Delegates by Jeffrey Richter
http://msdn.microsoft.com/msdnmag/issues/01/08/net/net0108.asp

.NET Delegates: Making Asynchronous Method Calls in the .NET Environment by Richard Grimes
http://msdn.microsoft.com/msdnmag/issues/01/08/Async/Async.asp
snewxf 2002-03-09
  • 打赏
  • 举报
回复
哇!全是星级上将.
我可还是菜鸟.:(
我得努力了.
snewxf 2002-03-09
  • 打赏
  • 举报
回复
是呀!相当于函数指针。我想只要这样记着就行。DELEGATE是委托的关健字,它的功能相当于C/C++中的函数指针.
if (input == "M")
process = new processDelegate(Multiply); //**这儿是创建一个委托实例.也就是然它有所指向吧!让它指向MULTIPLY方法.
else
process = new processDelegate(Divide); //**这也是一样的.
Console.WriteLine("Result: {0}", process(param1, param2)//这儿才是真正的的调用);

Ninputer 2002-03-09
  • 打赏
  • 举报
回复
翻译成“委派”,这个是MS官方翻译法
chechy 2002-03-09
  • 打赏
  • 举报
回复
delegate中文意思我不会翻译,好像有人翻译成委托。它相当于C和Delphi中的函数指针,但是比函数指针更好。
delegate主要应用在event上,实际上C#在event处理上和Java非常相似。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧