C#学习之----委托
2017-04-18 14:26
225 查看
委托
如果用到我们要把方法当做参数来传递的话,就需要用到委托。
简单来说,委托就是一个类型,这个类型可以赋值一个方法的引用
定义
定义一个委托,就是告诉编译器这个委托可以指向哪些类型的方法,然后创建该委托的实例
实例:
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);
}
}
如果用到我们要把方法当做参数来传递的话,就需要用到委托。
简单来说,委托就是一个类型,这个类型可以赋值一个方法的引用
定义
定义一个委托,就是告诉编译器这个委托可以指向哪些类型的方法,然后创建该委托的实例
实例:
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#面象对象学习:委托(delegate)
- C#教程第7讲委托1(学习笔记)
- c#委托的知识,转载学习。
- 学习C# 委托 转别人的
- C#学习笔记-delegate 委托
- C#委托的异步调用[学习]
- C#中的委托和事件学习(续)第1/3页
- C#学习3——委托和事件
- 我是如何学习设计模式的一:.NET C# 委托定天下,学好委托事件,设计模式精髓可以理解三分之一,怎么说也是三分天下之势了
- [学习]C#里的委托和事件实现Observer
- C#中委托如何使用?一点学习心得
- c# 委托的学习日记
- C#中的委托和事件学习(续)
- CLR Via C#系列学习笔记之委托
- C#学习5-委托与事件
- 关于C#中委托的学习
- C#学习笔记--委托(delegate)
- C#学习之委托和接口
- C#委托的入门学习