在c#中如何提供c/c++中的函数指针的功能
2007-06-16 16:58
330 查看
c# 中,取消了c和c++中使用最灵活,也是最难掌握的指针。那么在c#中如何提供c/c++中的函数指针的功能?c#提供了委托(delegate),委托是继承自System.Delegate类的引用类型。它相当于函数指针原型。与函数指针不同的是,委托在c#中是类型安全的,委托特别适合于匿名调用。要使用委托需经过三个步骤,即声明、实例化、调用。
using System;
//声明一个名为mfDelegate的委托,该委托有一个string类型的参数
//c#编译器编译时会产生一个新类,该类继承自System.Delegate,类
//名为mfDelegate
public delegate void mfDelegate(string name);
public class Hello Word
{
//定义与mfDelegate有相同参数类型的方法Hello()
public static void Hello(string name)
{
Console.WriteLine("您好,{0}!",name);
}
//定义与mfDelegate有相同参数类型的方法GoodBye()
public static void GoodBye(string name)
{
Console.WriteLine("再见,{0}!",name);
}
public static void Main()
{
//创建一个mfDelegate实例 mf1
mfDelegate mf1=new mfDelegate(Hello);
//调用mf1
mf1("Hello Word");
mfDelegate mf2=new mfDelegate(GoodBye);
mf2("Hello Word");
//将mf1 mf2组合成一个新的委托mf3
mfDelegate mf3=mf1+mf2;
//调用mf3
mf3("程序员");
//从组合的委托mf3中删除mf1
mfDelegate mf4=mf3-mf1;
mf4("Hello Word");
}
}
程序结果:您好,Hello Word!//mf1; 再见,Hello Word!//mf2
您好,程序员! 再见,程序员!//mf3
再见,Hello Word!//mf4
using System;
//声明一个名为mfDelegate的委托,该委托有一个string类型的参数
//c#编译器编译时会产生一个新类,该类继承自System.Delegate,类
//名为mfDelegate
public delegate void mfDelegate(string name);
public class Hello Word
{
//定义与mfDelegate有相同参数类型的方法Hello()
public static void Hello(string name)
{
Console.WriteLine("您好,{0}!",name);
}
//定义与mfDelegate有相同参数类型的方法GoodBye()
public static void GoodBye(string name)
{
Console.WriteLine("再见,{0}!",name);
}
public static void Main()
{
//创建一个mfDelegate实例 mf1
mfDelegate mf1=new mfDelegate(Hello);
//调用mf1
mf1("Hello Word");
mfDelegate mf2=new mfDelegate(GoodBye);
mf2("Hello Word");
//将mf1 mf2组合成一个新的委托mf3
mfDelegate mf3=mf1+mf2;
//调用mf3
mf3("程序员");
//从组合的委托mf3中删除mf1
mfDelegate mf4=mf3-mf1;
mf4("Hello Word");
}
}
程序结果:您好,Hello Word!//mf1; 再见,Hello Word!//mf2
您好,程序员! 再见,程序员!//mf3
再见,Hello Word!//mf4
相关文章推荐
- c++使用指针做出类似C#委托的功能
- C++中,如何定义和使用指向成员函数的指针
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- 如何使用c++的成员函数指针
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- 如何生成DLL文件并导出函数及如何在C++或C#中调用DLL中导出的函数
- C++如何返回函数指针
- c++ 如何把this指针传入成员函数 像全局函数一样调用成员函数
- [C/C++]如何解读返回函数指针的函数声明
- c++中如何通过函数参数对指针进行赋值
- c# 如何向托管c++传递函数指针
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- C++学习笔记六之函数如何使用指针来处理数组?
- [C/C++]如何解读返回函数指针的函数声明
- c++ 父类指针如何操作子类的新函数
- C# 如何调用 C++ DLL中的函数接口和回调函数
- C# vs C++之一:委托 vs 函数指针
- 抱歉,没分了!!!请教linux下,用C/C++编程,如何知道我要实现某一功能需要用到什么函数
- 好文转载:C# vs C++之一:委托 vs 函数指针
- C#中调用C++的dll的参数为指针类型的导出函数