C#委托

C# Delegates: Step by Step

1.委托的使用与如何调用方法的常规思想背道而驰。在常规方法调用期间,您将创建一个对象,其中包含要调用的方法,调用该方法并传递所需的参数。一切都发生在一个弹出窗口中,包括定义要调用的对象和方法以及调用该调用。通过委派的方法调用采用了不同的方法。它将方法调用的定义和方法的实际调用分为两部分。委托是方法的地址的.NET版本。它们是类型安全的类,用于定义返回类型和参数类型。委托类不仅包含对方法的引用,而且还包含对多个方法的引用。尽管自.NET 2.0以来,代表就已经存在,但今天他们在.NET 4中起着重要的作用。 Lambda表达式与委托直接相关。当参数是委托类型时,可以使用Lambda表达式来实现从委托引用的方法。存在将方法传递给其他方法的情况的委托。

2.

复制代码
 1 using System;
 2 public class Test
 3  {
 4   public delegate int CalculationHandler(int x, int y);
 5   static void Main(string[]  args)
 6    {
 7      Math math = new Math();
 8     //create a new instance of the delegate class
 9 
10      CalculationHandler sumHandler = new CalculationHandler(math.Sum);
11     //invoke the delegate
12       int result = sumHandler(8,9);
13      Console.WriteLine("Result is: " + result);
14      }
15    }
16 
17  public class Math
18   {
19     public int Sum(int x, int y)
20      {
21        return x + y;
22      }
23   }
View Code
复制代码

 

封装在委托中的有关方法的信息可以分为两类:方法签名和方法目标。

    方法签名包括有关方法参数的数量和类型以及返回类型的信息。

    方法目标包括方法的名称和方法所在的对象。当我们创建一个封装方法调用的委托对象时,我们必须提供这两套信息。

3.Demo

 

复制代码
 1     public delegate double UnitConversion(double from);
 2 
 3     class QuickDelegateDemo
 4     {
 5         // 2. Define handler method.
 6         public static double FeetToInches(double feet)
 7         {
 8             return feet * 12;
 9         }
10 
11         static void Main()
12         {
13             // 3. Create delegate instance.
14             UnitConversion doConversion = new UnitConversion(FeetToInches);
15 
16             Console.WriteLine("Feet to Inches Converter");
17             Console.WriteLine("------------------------\n");
18 
19             Console.Write("Please enter feet:  ");
20             double feet = Double.Parse(Console.ReadLine());
21 
22             // 4. Use delegate just like a method.
23             double inches = doConversion(feet);
24 
25             Console.WriteLine("\n{0} Feet = {1} Inches.\n", feet, inches);
26             Console.ReadLine();
27         }
28     }
View Code
复制代码

 

总结:1.委托其实就是类,具体说就是方法类。

posted @   Youse的二分口粮地  阅读(74)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示