怎么传委托

kangbo818 2009-08-25 01:06:45
其他类中不能定义本类中的,怎么将委托传到其他类?
给个例子看看
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewUser2008 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 waiwaihai 的回复:]
每天回帖,得10分
没办法,2楼,3楼把我要说的都说咯
[/Quote]

那确实!
哼哼哈嘿1986 2009-09-02
  • 打赏
  • 举报
回复
每天回帖,得10分
没办法,2楼,3楼把我要说的都说咯
acqy 2009-08-25
  • 打赏
  • 举报
回复
委托其实就是一种类型,把它看成是class,你就容易理解如何去传递它了
angel6709 2009-08-25
  • 打赏
  • 举报
回复
ding
微创社(MCC) 2009-08-25
  • 打赏
  • 举报
回复
类名.委托名(...)
liffe 2009-08-25
  • 打赏
  • 举报
回复
一楼的不错!顶
ws_hgo 2009-08-25
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
public delegate bool DelegateTest(object obj1, object obj2);
class Class1
{
static void Main()
{
Employee[] Employees =
{
new Employee("huguo",1000000),
new Employee("lili",20000),
new Employee("lulu",30000),
new Employee("xixi",50000),
new Employee("jianjian",10000),
new Employee("yoyo",9000)
};
//委托DelegateTest代理的方法是Greate
DelegateTest MyTest = new DelegateTest(Employee.Greate);
Sorter MySort = new Sorter();
//冒泡算法中第一个参数是对应Employees数组信息,第二个参数是委托
MySort.Sort(Employees, MyTest);
for (int m = 0; m < Employees.Length; m++)
{
Console.WriteLine(Employees[m].ToString());
}
}
}
class Employee
{
public string Name;
public int Salary;
public Employee(string Name, int Salary)
{
this.Name = Name;
this.Salary = Salary;
}
//用override重写string方法
public override string ToString()
{
return string.Format(Name + ",{0:C},", Salary);
}
//定义一个方法,如果obj2传过来的 Salary大于obj1就返回true;
public static bool Greate(object obj1, object obj2)
{
Employee Employee1 = (Employee)obj1;
Employee Employee2 = (Employee)obj2;
return (Employee2.Salary > Employee1.Salary) ? true : false;
}
}
class Sorter
{
public void Sort(object[] ArrayObj, DelegateTest Test)
{
//下面就是冒泡算法啦
for (int i = 0; i < ArrayObj.Length; i++)
{
for (int j = i + 1; j < ArrayObj.Length; j++)
{
if (Test(ArrayObj[j], ArrayObj[i]))
{
object Temp = ArrayObj[i];
ArrayObj[i] = ArrayObj[j];
ArrayObj[j] = Temp;
}
}
}
}
}

}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/07/25/4380283.aspx
ws_hgo 2009-08-25
  • 打赏
  • 举报
回复
using System;   
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
//如果要多次调用这个方法,那么就要多次调用这个委托,委托包含多个方法,这个种委托就是多播委托!
class 多播委托
{
//用的是void没有返回值
public delegate void DelageteTest(double val);
static void Main()
{
//多播委托中添加2个方法
DelageteTest MyTest = new DelageteTest(Test.Area);
MyTest += new DelageteTest(Test.Scare);
//下面的代码跟上面的3行代码是等价的
//DelageteTest MyTest;
//DelageteTest Test1 = new DelageteTest(Test.Area);
//DelageteTest Test2 = new DelageteTest(Test.Scare);
//MyTest = Test1 + Test2;

多播委托 多 = new 多播委托();
多.OPreation(MyTest, 2.0);
多.OPreation(MyTest, 12.0);
}
void OPreation(DelageteTest Action, double d)
{
Action(d);
}
}
class Test
{
public static void Area(double Val)
{
Console.WriteLine(Val * 2);
}
public static void Scare(double Val)
{
Console.WriteLine(Val * Val);
}
}

}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/07/25/4380293.aspx
ws_hgo 2009-08-25
  • 打赏
  • 举报
回复
using System;   
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class 简单的委托实例
{
public static double Area(double Val)
{
return Val * 2;
}
public static double Scare(double Val)
{
return Val * Val;
}
}
class Test
{
public delegate double delegateTest(double dd);
static void Main()
{
//实例化了个委托数组,(一旦定义了委托类,就可以实例化它的实例)
delegateTest[] Operations =
{
//说明了委托的一种方式,把方法组合到数组
new delegateTest(简单的委托实例.Area),
new delegateTest(简单的委托实例.Scare)
};
for (int i = 0; i < Operations.Length; i++)
{
Console.WriteLine("Using Operations[{0}]", i);
Test MyTest = new Test();

//把委托传递给ProcessDelagate()这个方法,Operations[0]可以理解成delegateTest Operations =new delegateTest(简单的委托实例.Area);调用ProcessDelagate这个方法的时候Operations代理的方法是简单的委托实例.Area
MyTest.ProcessDelagate(Operations[i], 12.0);
MyTest.ProcessDelagate(Operations[i], 2.0);
Console.WriteLine();
}
}
//把委托作为一个参数传递到ProcessDelagate()第一个参数中
void ProcessDelagate(delegateTest Action, double d)
{
double Result = Action(d);
Console.WriteLine("提供的值是{0},结果是{1}", d, Result);
}
}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/07/25/4380293.aspx
threenewbee 2009-08-25
  • 打赏
  • 举报
回复
1 定义委托:
public delegate void TestDelegate(string sParam);

2 传递委托:
public void Func(TestDelegate td, string sParam)
{
if (td != null) td(sParam);
}

3 使用委托:
Func(delegate(string sParam) { Console.WriteLine(sParam); }, "Hello");

110,534

社区成员

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

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

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