zoukankan      html  css  js  c++  java
  • C#对委托的初步理解理解

    作为新手对委托的学习:

    1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体)

    public  delegate string TestDelegate(string test);

    /*编译后会生成如下的一个完整类:
    public sealed class GreetingDelegate:System.MulticastDelegate
    {
    public GreetingDelegate(object @object, IntPtr method);
    public virtual IAsyncResult BeginInvoke(string name, AsyncCallback callback, object @object);
    public virtual void EndInvoke(IAsyncResult result);
    public virtual void Invoke(string name);
    }
    */

    2.实例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace Demo
    {
        public delegate string TestDelegate(string name);//定义委托,委托实际上是一个类
        //新建一个类来测试委托调用方法
        public class Test
        {
            public void GreetPeople(string name, TestDelegate delegate1)
            {
                //if (delegate1 != null)//如果有方法注册委托变量
                //{
                //    delegate1(name);//通过委托调用方法
                //}
    
                delegate1?.Invoke(name);//(与上面的if等价)
            }
        }
        class Program
        {
            private static string TestMethod(string name)
            {
                Console.WriteLine("你好," + name);
                return null;
            }
    
            static void Main(string[] args)
            {
                Test gm = new Test();
    
                //使用委托调用TestMethod方法
                gm.GreetPeople("panter", TestMethod);
                Console.WriteLine();
    
                //使用委托调用lambda
                Console.Write("使用了lambda:");
                gm.GreetPeople("潘特", lambdatest =>
                {
                    Console.WriteLine("你好,"+lambdatest);
                    return null;
                });
                Console.ReadKey();
            }
        }
    }

    结果:

  • 相关阅读:
    第五课 主引导程序的扩展 下
    C.Candy
    B.大钉骑马走江湖
    A喝酒(北京林业大学校赛)
    HDU 5666 Segment
    南京理工大学第八届校赛题目题解(部分)
    TCO 2016 Round 1B
    139. Word Break
    90. Subsets II
    78. Subsets
  • 原文地址:https://www.cnblogs.com/panter/p/6592920.html
Copyright © 2011-2022 走看看