zoukankan      html  css  js  c++  java
  • 委托学习笔记一(调用委托) (转载)

    委托是引用类型,可以传递方法或包括在方法的参数列表中,就像其他任何引用类型一样。

    用例子来介绍一下:
    在这个例子当中,我们将使用委托为通用类库写一个方法。ComputeIt()方法给两个变量v和T的函数的表达式求值。表达式的第一部分是v的函数,对于T的所有值求值都是一样的。表达式的第二部分是T的函数,根据T的值有不同的求值。对于T的低值它应该用一种方式求值,对于T的高值应该用另一种方法求值。
         处理这种情况的一种办法是使用委托定义ComputeIt()的不同版本,一种计算T的低值一种计算T的高值。更紧凑的办法是使用委托定义一个在各种情况下都能使用的通用版本。
         ComputeIt()方法带三个参数:两个对应v和T参数的双精度值,和一个委托实例的引用和委托相关的方法用来计算表达式和T值有关的第二部分。
            public static double ComputeIt(double v,double T,Equation eq)
            
    {
                
    return (0.5*v*v)+eq(T);
            }

    Equation 委托本身定义为带一个double参数并返回一个子double值。
        public delegate double Equation(double x);
    下面是调用委托的代码:
    第一次委托和LowT()方法相关联。第二次委托和HighT()方法相关联。在两种情况下,调用ComputeIt()方法的语法都是一样的,但该方法的输出结果却不同,因为在该方法内部调用了不同的方法。
    public delegate double Equation(double x);
        
    class Class1
        
    {
            
    /// <summary>
            
    /// 应用程序的主入口点。
            
    /// </summary>

            [STAThread]
            
    static void Main(string[] args)
            
    {
                
    //
                
    // TODO: 在此处添加代码以启动应用程序
                
    //
                double result;
                Equation eqn;

                
    //第一个委托实例
                eqn=new Equation(Class1.LowT);
                result
    =Class1.ComputeIt(100.0,4000.0,eqn);
                Console.WriteLine(
    "Result is {0}",result);

            
                eqn
    =new Equation(Class1.HighT);
                result
    =Class1.ComputeIt(100.0,4000.0,eqn);
                Console.WriteLine(
    "Result is {0}",result);

                Console.ReadLine();



            }


            
    //两个方法
            public static double LowT(double T)
            
    {
                
    return 1009.0*T;
            }


            
    public static double HighT(double T)
            
    {
                
    return (1009.0*T)+(0.1*T*T);

            }


            
    public static double ComputeIt(double v,double T,Equation eq)
            
    {
                
    return (0.5*v*v)+eq(T);
            }

        }
  • 相关阅读:
    Software_programming_automation_selenium
    Software_programming_EnterpriseArch_ServiceWithSingleTonFactory
    web-bootstrap-button
    Software--C#--grammer_Delegate--Event
    Software_C#_grammer_Deletegate--Strategy
    Software--BigData--StreamingData
    线程死锁和递归锁
    同步锁Lock(互斥锁)
    GIL计算python 2 和 python 3 计算密集型
    什么是python的全局解释锁(GIL)
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/829841.html
Copyright © 2011-2022 走看看