您的位置:首页 > 编程语言 > C#

C#中使用委托

2013-05-08 16:43 176 查看
C#中使用委托 

在这样一类环境中使用委托是较好的方式,如:数据提供方提供数据给另一方使用,提供方不用关心对方如何使用这些数据,而只是关心提供哪些数据。而使用方不关心提供哪些数据,只关心如何使用这些数据的情况。 

使用委托的步骤: 
1、声明委托,定义参数列表 
2、实例化委托,同时将一个符合委托声明参数的方法名称传递给委托 
3、调用委托,在数据提供方调用委托,并将数据按照委托声明的方式传递给委托 

委托类似于C++中的函数指针,好比一个接口规范,他定义数据交换的方式,及委托方法的参数,而不是方法的名称。委托方定义一个委托后,然后用一个方法将数据通过委托交给调用方处理。他不用理调用方如何处理数据,他所要关心的是提供哪些数据。 
而调用方使用委托方提供的方法,将自己的处理方法传递给委托,由这个调用方方法来处理,委托方的数据。如下例: 

using System; 
using System.Collections; 

namespace Exam 

public class myObject 

int id = 0; 
string sName = ""; 
public myObject(int i,string name) 

id = i; 
sName = name; 

public string Name 

get 

return sName; 




// 在类定义的外部声明委托 
public delegate void testDelegate(myObject me); 

class myObjectList 

ArrayList list = new ArrayList(); 
public void AddObject(myObject me) 

list.Add(me); 

// 定义需要对那些数据使用委托 
public void ProcessMyObject(testDelegate myDelegate) 

foreach(myObject e in list) 

myDelegate(e); 




class TestClient 

// 定义处理数据的方法 
public static void PrintName(myObject me) 

Console.WriteLine("Name is :{0}",me.Name); 



class Class1 

[STAThread] 
static void Main(string[] args) 

myObject[] a = new myObject[3]; 
a[0] = new myObject(1,"no1"); 
a[1] = new myObject(2,"no2"); 
a[2] = new myObject(3,"no3"); 
myObjectList l = new myObjectList(); 
for(int i = 0 ;i<3; i++) 

l.AddObject(a[i]); 

l.ProcessMyObject(new testDelegate(TestClient.PrintName)); 
Console.ReadLine(); 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: