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 @ 2020-11-16 16:13  Youse的二分口粮地  阅读(77)  评论(0)    收藏  举报