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

C#中使用委托

2005-07-26 21:18 357 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# string class list system c++