C#学习之----委托
来源:互联网 发布:太极线指标软件 编辑:程序博客网 时间:2024/05/21 10:16
如果用到我们要把方法当做参数来传递的话,就需要用到委托。
简单来说,委托就是一个类型,这个类型可以赋值一个方法的引用
定义
定义一个委托,就是告诉编译器这个委托可以指向哪些类型的方法,然后创建该委托的实例
实例:
class Program
{
private delegate string StringDele(int index);
static void Main(string[] args)
{
//实例一 实现委托的定义和调用
//第一种方式 使用委托类型 创建实例
// StringDele strIns = new StringDele(ToString);//strIns指向ToString方法
//第二种方式 使用委托类型 创建实例 常使用的方式
// StringDele strIns =ToString;//strIns指向ToString方法
//第一种 引用方式 常使用的方式
// string s = strIns(20);
//第二种引用方式 Invoke调用
//string s = strIns.Invoke(10);
// Console.WriteLine(strIns(20));
//实例二 实现委托可以作为一个方法的参数
PrintString method;
method = Methiod1;//设置委托指向Methiod1方法的引用
PrintStr(method);
method = Methiod2;//设置委托指向Methiod2方法的引用
PrintStr(method);
//Action委托--引用了一个无返回类型的方法
//指定向一个没有返回值,有一个int参数的方法
Action<int> a=ActionMehtod;//定义一个委托类型,这个类型可以指向一个没有返回值,有一个int参数的方法
//指向无返回 无参数的方法
Action act=ActionMethod;//这个是系统内置的一个委托类型,他可以指向无返回 无参数的方法
a(12);
act();
//Func委托--他引用了一个带返回值的方法,他可以传递0--16个参数类型,和一个返回类型
//无参数,有返回值
Func<int> func = FuncMethod;
Console.WriteLine(func());
Func<string,int> funcd=FuncMethod2;//可以定义多个参数,最后一个必须为返回类型
//可以定义多个参数
Func<string,int, int> func3 = FuncMethod3;//前两个是输入参数,最后一个必须为返回类型
int tt = funcd("123");
Console.WriteLine(tt);
int t3 = func3("456",12);
Console.WriteLine(t3);
Console.Read();
}
public static string ToString(int index)
{
return index.ToString();
}
public delegate void PrintString();
public static void PrintStr(PrintString str)
{
str();
}
static void Methiod1()
{
Console.WriteLine("mehtod 1");
}
static void Methiod2()
{
Console.WriteLine("mehtod 2");
}
static void ActionMethod()
{
Console.WriteLine("ActionMethod");
}
static void ActionMehtod(int dex)
{
Console.WriteLine("ActionMethod dex");
}
static int FuncMethod()
{
return 1;
}
static int FuncMethod2(string str)
{
return int.Parse(str);
}
static int FuncMethod3(string str,int t)
{
return int.Parse(str);
}
}
- C#之委托学习
- C#学习之委托
- C#学习之委托
- C#学习之----委托
- C#之委托学习一
- C#之委托学习二
- C#之委托学习三
- C#学习笔记之委托
- C#学习之线程--委托
- C#学习之委托和接口
- C#基础再学习之委托
- C#学习之委托(1)
- C#学习之委托(2)
- C#委托与事件之学习
- C#学习之委托(Delegate)
- C#学习之代理委托的使用
- C#学习笔记之泛型委托
- C#委托学习之回调
- 【PHP】PHP中static和self的区别
- java jvm详解
- (38):检查参数的有效性
- 奇异值分解SVD
- 代码模块化管理和提升web性能的知识点
- C#学习之----委托
- [jFinal]前后端数据交互技巧(一)
- JAVA Eexcel导入导出工具类
- golang起一个http服务,mac交叉编译并在linux上起服务
- 35
- Android 之旅:Google 发布 Android 性能优化典范
- java虚拟机类加载机制
- 在Linux窗口界面获取文件目录以及切换目录
- 使用github遇到的问题