C#学习笔记——委托

委托,相当于函数指针,是对方法的包装,把方法包装成变量就是定义声明委托变量,把它作为参数传给其他方法就是调用委托。
首先,Action和Func是C#类库中已经定义好的委托,

public delegate double Cal(double a, double b);
public static void Main(string[] args)

    {
        Claculator claculator = new Claculator();
        Action action = new Action(claculator.Show);
        action.Invoke();
        Func<double, double, double> func = new Func<double, double, double>(claculator.Add);//传入两个double类型的参数,返回值为double
        double result = func.Invoke(12, 13);
        Console.WriteLine(result is double);
          Cal cal = new Cal(claculator.Sub);
        result = cal.Invoke(13, 12);
     
    }
  class Claculator
    {
        public void Show()
        {
            Console.WriteLine("加法与减法");
        }
        public double Add(double a,double b)
        {
            return a + b;
        }
        public double Sub(double a,double b)
        {
            return a - b;
        }
    }  

这是一个简单的调用action func委托和自定义委托的例子,action可以是一个无传参,无返回值的委托,而func的最后一个表示返回值类型,前面的为传入的参数.
使用委托的注意事项
委托与所封装的方法要类型一致,委托是一种类,所以他的声明与类同级,不能嵌套在类里。
委托的方法级别的紧耦合,即相互调用的方法之间产生了相互依赖的关系,一旦某个方法出现bug,调用它的方法也无法工作
过多使用委托,使代码的可读性下降,debug难度增加
使用委托不当,还会造成内存泄漏和性能下降

发布了6 篇原创文章 · 获赞 6 · 访问量 1651

猜你喜欢

转载自blog.csdn.net/Kerrhs/article/details/104343787