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();
            }
        }
    }

    结果:

  • 相关阅读:
    Tar命令用法详解
    一次Linux系统被攻击的分析过程
    企业系统安全管理和强化的十点建议
    中型企业的IT运维策略
    企业邮件服务器被列入RBL,申请撤销PBL指控
    Xshell远程连接Ubuntu
    LeetCode 7: Reverse Integer
    LeetCode 14: Longest Common Prefix
    LeetCode 203:Remove Linked List Elements
    数据挖掘之处理分类自变量与处理时间变量
  • 原文地址:https://www.cnblogs.com/panter/p/6592920.html
Copyright © 2011-2022 走看看