zoukankan      html  css  js  c++  java
  • C#中的委托,个人理解

    相当于Java中的interface 定义的接口,但是  比Java中的interface要好

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace ADONetDome
    {
    
        public delegate void UserC(int i);   
        //可以理解为java中的interface 接口,但是委托中不需要去实现,会自动找见相对应类的匹配的方法.又和重载相似,但是方法名不同
        public class UserA 
        {
            public UserC userC;    
    
            public UserA(){
                userC = null;
            }
            /// <summary>
            /// 去交电费,委托C去找个人给我交电话费
            /// </summary>
            public void PayTel(String name,int money){  
                Console.WriteLine("我是UserC:"+name+"托我去替他交电话费,交"+money+"");
                userC(money);
            }
            
    
        }
    
        public class UserB{
            
            public void goPayOther(int money)
            {
                Console.WriteLine("我是UserB:   发现有人让我去交话费,他给了我钱. 好!!!我去交" + money + "元,发现交给其他人了");
            }
            public void goPayTel(int money)
            {
                Console.WriteLine("我是UserB:   发现有人让我去交话费,他给了我钱. 好!!!我去交" + money + "");
            }
        }
    }

    调用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace ADONetDome
    {
        class Program
        {
            static void Main(string[] args)
            {
                UserA A = new UserA();  //有一个对象A人
                
                UserB B = new UserB();  //有一个对象B人
                //现在A想让B去交电话费,可是找不见这个人,但是B知道C对象,和他很熟,A和C也很熟  A中有C,不需要创建   然后让C调B中支付的方法
                A.userC = B.goPayTel;       //A 委托C 去调用C的支付方法,替我交话费    A对象中没有B 对象, C中也没有B对象  ,java中interface中就不一样了,必须需要去实现类实现其中的方法  
                Console.WriteLine("我是UserA,叫张三,我需要B给我交电话费,需要委托UserC给说一下,把钱给UsreC");
                A.PayTel("张三",400);
    
    
                Console.WriteLine("Hello World!");
            }
        }
    }
  • 相关阅读:
    【codevs1079】回家
    【codevs1245】最小的N个和
    【codevs1231】最优布线问题
    【codevs1078】最小生成树
    【NOIP1999】【codevs1083】Cantor表
    【NOIP2006】【codevs1075】明明的随机数
    【NOIP2001】【codevs1011】数的计算
    【POJ2259】Team Queue(队列,模拟)
    【LOJ119】单源最短路 模板
    Jzoj4900 平方数
  • 原文地址:https://www.cnblogs.com/han-guang-xue/p/10538851.html
Copyright © 2011-2022 走看看