时间:2021-05-20
从今天开始写关于C#的系列文章,本篇文章主要讲解C#中的委托使用。
委托其实就是一种数据类型,和int,string是一样的概念。
如果要把一个字符串赋值给一个变量,用string声明一个变量即可。如果要把一个方法赋值给一个变量,那么用什么关键字呢?当然就是用委托了,所以用委托声明的变量就可以接受一个方法了,之后那个变量就可以像方法一样执行。
下面开始详细介绍:
先看一段代码:
static void Main(string[] args) { int i; //可以接受一个整数的变量 string str; //可以接受一个字符串的变量 }在Main方法内声明了2个变量:i和str。大家都很熟悉的代码,变量i表明它可以接受一个整数,变量str表明它可以接受一个字符串。
那么如果我想声明一个变量既可以接受整数又可以接受字符串,那该用什么数据类型来声明这样的变量呢?
答案很简单:用class。
public class MyClass{ public int i { get; set; } //接受整数 public string str { get; set; } //接受字符串}那么我们就创建了一种数据类型:MyClass,用它声明的变量可以同时接受一个整数和一个字符串。
如下:
static void Main(string[] args){ MyClass obj = new MyClass(); obj.i =1; obj.str ="我是字符串";}现在问题来了:我想要一种数据类型可以声明一个变量用于接受一个方法。
既然这种数据类型要接受一个方法,那我们先看看方法长什么样:
public string Method(int m,int n) { return ""; }上面的Method方法最主要的特点就是这个方法的输入参数数据类型与输出的数据类型。
通常我们会调用各种方法,调用方法前我们会确定方法的输入参数的数据类型和方法输出的数据类型,至于方法的主体我们通常不关心,方法的主体由方法编程人员去完成即可。
所以我们编写一个方法,调用一个方法前都要明确的方法的输入输出数据类型。
对于上面Method方法的输入数据类型为2个整数,输出的是一个字符串。
现在我们要声明一个变量来接受这个方法,那么这个变量的数据类型也应该要明确输入,输出的数据类型。那么我们应该定义符合那个方法输入与输出一致的数据类型。
public class Test{ //这种数据类型可以接受一个方法 public delegate string MethodDelegate(int i1,int i2);}好了,我已经声明了和上面Method方法一样的输入与输出类型的一个数据类型了:MethodDelegate。
那么我们就可以用这个数据类型来接受Mehtod方法了,完整代码如下:
class Program{ //这种数据类型可以接受一个方法 public delegate string MethodDelegate(int i1, int i2); /// <summary> /// 我们可以用MethodDelegate声明一个变量来接受方法了 /// </summary> public void Test() { MethodDelegate IamMethod = Method; //把下面那个Method方法赋值给变量了。 var result=IamMethod(1, 2); //然后把这个变量当作方法一样执行即可。 } public string Method(int m, int n) { return ""; } }在上面第4行:我们用delegate关键字声明了一种数据类型:这种数据类型和我们想要接受什么样方法的输入输出类型保持一致就可以了。
那么上面的MethodDelegate就可以接受带2个int类型的输入参数并且返回类型是string的任何方法了。
现在我们发现委托和int,string是一样的概念,只不过,int用来接受整数,string用来接受字符串,delegate用来声明一种数据类型接受方法。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的
本文浅析了C#使用委托的步骤。分享给大家供大家参考。具体分析如下:委托可以理解为C或C++里面的函数指针,调用委托其实是调用被委托的方法。简单的使用委托的步骤如
C#中的委托委托和事件在.NETFramework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这
本文实例讲述了C#使用委托(delegate)实现在两个form之间传递数据的方法。分享给大家供大家参考。具体分析如下:关于Delegate【代理、委托】是C#
C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(De