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();
}
}
}
在这样一类环境中使用委托是较好的方式,如:数据提供方提供数据给另一方使用,提供方不用关心对方如何使用这些数据,而只是关心提供哪些数据。而使用方不关心提供哪些数据,只关心如何使用这些数据的情况。
使用委托的步骤:
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# 下使用委托跨窗体调用函数和控件的实现
- C# winform窗体间传值(使用委托或事件)
- 编写高质量代码改善C#程序的157个建议——建议138:事件和委托变量使用动词或形容词短语命名
- C#中Delegate委托的使用
- C#委托的使用
- C#中对委托的理解和使用
- [转]何时使用委托而不使用接口(C# 编程指南)
- C#使用委托实现的快速排序算法实例
- C#中使用委托对字符串进行冒泡排序案例
- C#中委托的使用
- 懵懂记录C#委托的使用
- 如何:声明、实例化和使用委托(C# 编程指南)
- c#中时间和委托的 adbb 使用
- C#中多线程 委托的使用
- C# 使用委托调用待待闪屏。
- C#中委托的理解和使用
- C#委托的使用,排序。
- c#利用委托跨线程调用UI控件完整使用方法
- [C#学习笔记之多线程1]使用ParameterizedThreadStart委托向线程函数传送参数
- 【C#】使用委托实现窗体传值