c# 委托的常见用法

C# 委托的常见用法

C#中委托是一种引用方法的类型,可以将方法视为对象进行传递。 C#委托可以让我们写出更灵活,更可读性和更维护性的代码。 接下来介绍一些C#委托类型的常见用法。

委托作为参数

将委托作为方法参数,可以按需传递需要调用的方法。此方式允许运行时决定调用哪个方法。示例代码如下:

delegate int NumberChanger(int n);  // 定义委托类型

class Program
{
    static int num = 10;

    public static int AddNum(int p)
    {
        num += p;
        return num;
    }

    public static int MultNum(int p)
    {
        num *= p;
        return num;
    }

    static void Main(string[] args)
    {
        NumberChanger nc = new NumberChanger(AddNum); // 声明委托类型句柄
        nc(5);
        Console.WriteLine("num's value: {0}", num);  // 输出: 15

        nc = new NumberChanger(MultNum);  // 将另一个方法关联到委托实例中
        nc(2);
        Console.WriteLine("num's value: {0}", num);  // 输出: 30
        Console.ReadKey();
    }
}

委托的多播

使用C#委托,您可以使用+或+=运算符将委托链接在一起以形成多个调用列表。 这被称为多路广播委托。 示例代码:

delegate void MoveDelegate();  // 声明委托类型

class Ball
{
    // 用作委托事件的成员方法
    public void MoveUp()
    {
        Console.WriteLine("Moving the ball up...");
    }

    public void MoveDown()
    {
        Console.WriteLine("Moving the ball down...");
    }

    public void MoveLeft()
    {
        Console.WriteLine("Moving the ball left...");
    }

    public void MoveRight()
    {
        Console.WriteLine("Moving the ball right...");
    }

    public void StopMoving()
    {
        Console.WriteLine("Stopping the ball...");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Ball ball = new Ball();
        MoveDelegate moveDelegate = ball.MoveUp;
        moveDelegate += ball.MoveDown;
        moveDelegate += ball.MoveLeft;
        moveDelegate += ball.MoveRight;
        moveDelegate += ball.StopMoving; 

        moveDelegate(); // 调用多播委托

        Console.ReadKey();
    }
}

以上是C#委托的常见用法,C#委托的目的是使代码更弹性并且避免代码逻辑串在一起。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 委托的常见用法 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • Unity实现物体弧线运动到规定的坐标

    Unity实现物体弧线运动到规定的坐标的完整攻略需要涉及以下几个步骤: 1. 生成弧线路径 首先需要生成一条弧线路径,用于指导物体运动。可以使用Unity中的Path Creator插件来生成弧线路径。具体操作如下: 在Unity Asset Store中搜索Path Creator插件,下载并导入到项目中。 在场景中创建空对象,然后添加Path Creat…

    C# 2023年6月3日
    00
  • c# 识别图片格式的方法

    C#识别图片格式的方法 在C#中,我们可以使用System.Drawing.Image类来识别图片格式。 Image类使用一个ImageFormat枚举成员来保存图像的格式信息。我们可以通过检查这个成员,来确定图像的格式。 方法一:使用GetImageType方法 使用GetImageType方法可以方便地获取图像格式。以下是示例代码: using Syst…

    C# 2023年5月15日
    00
  • asp.net+js实时奥运金牌榜代码第1/2页

    asp.net+js实时奥运金牌榜是一项基于ASP.NET和JavaScript技术的开发项目,可以实时监控奥运会金牌榜的变化并显示在网页上,该项目具有较高的实用性,适用于体育比赛等大型赛事开发。以下是该项目的详细攻略: 环境搭建 安装Visual Studio 安装IIS服务器 创建Web应用项目 技术实现 HTML HTML部分主要用于页面结构的搭建,使…

    C# 2023年5月31日
    00
  • Node.js实现Excel转JSON

    下面是“Node.js实现Excel转JSON”的完整攻略。 一、安装依赖模块 在开始使用Node.js进行Excel转JSON之前,需要安装一些必要的模块。打开命令行工具,输入以下命令: npm install xlsx 这将会安装一个名为xlsx的模块,该模块可以让Node.js读取和写入Excel文件。 二、实现Excel转JSON Step 1:读取…

    C# 2023年6月1日
    00
  • C#之如何实现真正的四舍五入

    C#之如何实现真正的四舍五入攻略 在C#中,常规的四舍五入操作使用 Math.Round(double d) 方法即可实现,但是有时候我们需要更自由的控制四舍五入的行为,比如保留小数位数、指定舍入方向等等。那么如何实现呢?下面我就为大家呈现一个C#实现真正的四舍五入攻略: 1. 使用 decimal 类型进行舍入 因为 double 类型的数据在进行计算时可…

    C# 2023年6月6日
    00
  • C#如何连接服务器共享文件夹

    连接服务器共享文件夹是C#程序开发中非常常见的需求,以下是连接服务器共享文件夹的完整攻略: 确定共享文件夹的路径 在连接服务器共享文件夹之前,需要确定共享文件夹的路径。共享文件夹通常是基于服务器的网络共享,因此需要访问服务器的网络位置,例如: \\servername\sharedfolder 其中,servername表示服务器的名称或IP地址,share…

    C# 2023年6月6日
    00
  • 轻松学习C#的异常处理

    下面我将详细讲解如何轻松学习C#的异常处理,包括以下几点: 一、异常处理概述 在编写程序时,不可避免地会遇到各种错误,比如输入错误、内存不足、文件不存在等等,这些错误我们称之为异常。当程序出现异常时,如果不进行处理,程序将会无法正常运行,甚至会出现崩溃的情况。因此,异常处理十分重要。 C#中的异常处理主要通过try-catch-finally语句实现。其中,…

    C# 2023年5月15日
    00
  • C#生成不重复随机字符串类

    C#生成不重复随机字符串类可以通过以下几个步骤来实现: 导入命名空间:System.Security.Cryptography和System.Text。 C# using System.Security.Cryptography; using System.Text; 定义一个生成随机字符串的函数,函数可以包括一个参数,指定生成的字符串的长度。函数内部要创建…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部