zoukankan      html  css  js  c++  java
  • C# 中委托的簡單理解

        委托是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
        據我個人理解,可以解釋為:委托是一個可以調用其它方法、事件等的架子。
        委託的的聲明類似於函數,但不帶函數體,且要使用delegate關鍵字。委托的聲明指定了一個函數名,其它包含一個返類型和參數列表。
    下邊做一個簡單的例字,幫助大家理解。

        class Program
        {
            
    /// <summary>
            
    /// 1、定義委托
            
    /// </summary>
            
    /// <param name="param1"></param>
            
    /// <param name="param2"></param>
            
    /// <returns></returns>
            delegate double ProcessDelegate(double param1, double param2);
            
    /// <summary>
            
    /// 得到乘積
            
    /// </summary>
            
    /// <param name="param1"></param>
            
    /// <param name="param2"></param>
            
    /// <returns></returns>
            static double Multiply(double param1, double param2)
            {
                
    return param1 * param2;
            }
            
    /// <summary>
            
    /// 得到除數
            
    /// </summary>
            
    /// <param name="param1"></param>
            
    /// <param name="param2"></param>
            
    /// <returns></returns>
            static double Divide(double param1, double param2)
            {
                
    return param1 / param2;
            }

            
    static void Main(string[] args)
            {
                
    //2、聲明一下委托變量
                ProcessDelegate process;
                Console.WriteLine(
    "Enter 2 number separated with a comma:");
                
    string input = Console.ReadLine();
                
    int commaPos = input.IndexOf(',');
                
    double param1 = Convert.ToDouble(input.Substring(0,commaPos));
                
    double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1));
                Console.WriteLine(
    "Enter M to multuply or D to divide:");
                input 
    = Console.ReadLine();
                
    if (input=="M")
                {
                    
                    
    //3、把一個函數引用賦給委托變量。
                    
    //注:須使用new 關鍵字創建一個新委托,在這個關鍵字後面,指定委託類型,提供一個函數,不帶括號
                    
    //此處將調用 Multiply()函數
                    process = new ProcessDelegate(Multiply);
                }
                
    else
                {
                    process 
    = new ProcessDelegate(Divide);
                }
                
    //4、使用委托調用函數
                Console.WriteLine("Result:{0}",process(param1,param2));
                Console.ReadKey();
            }
        }

  • 相关阅读:
    2. 获取access_token
    1. 钉钉可以做什么
    3.5 创建模型-关系
    3.5 创建模型 其它
    3.3 创建模型 阴影属性
    3.4 创建模型-并发标记
    Spark运行CDH6.3.2碰到的由于hive驱动引起的问题解决方法
    Spark中碰到需要转义的|分隔符填坑方法
    Spark2 Can't write dataframe to parquet hive table : HiveFileFormat`. It doesn't match the specified format `ParquetFileFormat`.
    Spark连接CDH平台thriftserver和kerberos访问不一致错误排查
  • 原文地址:https://www.cnblogs.com/scottckt/p/893159.html
Copyright © 2011-2022 走看看