C#中的委托使用

所属分类: 软件编程 / C#教程 阅读数: 83
收藏 0 赞 0 分享

从今天开始写关于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用来声明一种数据类型接受方法。

更多精彩内容其他人还在看

c#开发word批量转pdf源码分享

已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF,看下面的实例源码吧
收藏 0 赞 0 分享

c# xml API操作的小例子

这篇文章主要介绍了c# xml API操作的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

c#唯一值渲染实例代码

这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

淘宝IP地址库采集器c#代码

这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C#在后台运行操作(BackgroundWorker用法)示例分享

BackgroundWorker类允许在单独的专用线程上运行操作。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题,下面看示例
收藏 0 赞 0 分享

c#文本加密程序代码示例

这是一个加密软件,但只限于文本加密,加了窗口控件的滑动效果,详细看下面的代码
收藏 0 赞 0 分享

c#生成站点地图(SiteMapPath)文件示例程序

这篇文章主要介绍了c#生成站点地图(SiteMapPath)文件的示例,大家参考使用
收藏 0 赞 0 分享

C# 键盘Enter键取代Tab键实现代码

这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm导出Excel方法介绍

在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式
收藏 0 赞 0 分享

C#串口通信程序实例详解

在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧
收藏 0 赞 0 分享
查看更多