zoukankan      html  css  js  c++  java
  • .NET (二)委托第二讲:内置委托Func

    在上一章节中,我们自己声明了一个委托:

     public delegate bool Cal(int num);

    接受int参数,返回bool类型,目的是过滤集合中的 奇数 或者 偶数。

    .NET 为我们内置了一个泛型委托,用于处理这种情况,省去了自定义的麻烦。

    public delegate TResult Func<in T, out TResult>(T arg);

    Func是.NET定义的委托,接受任何参数,并返回自定义类型结果。

    我们可以将代码修改为:public static void MyCal(List<int> list, Cal cal)

    public static void MyCal(List<int> list, Func<int,bool> func)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (func(list[i]))
                    {
                        list.RemoveAt(i);
                        i--;
                    }
                }
            }

    将原本方法中的参数Cal 修改为 Func类型。同时删除public delegate bool Cal(int num);委托声明语句。

    像如下调用:

    static void Main(String[] args)
            {
                List<int> list = new List<int>();
                list.Add(1);
                list.Add(2);
                list.Add(3);
                list.Add(4);
                list.Add(5);
                list.Add(7);
                list.Add(6);
    
                Func<int, bool> func = new Func<int, bool>(Even);
                MyCal(list, func);
    
                
    
                foreach (int i in list)
                {
                    Console.WriteLine(i);
                }
    
            }

    我们仍然可以省略委托名,使用匿名委托,修改代码为:

                MyCal(list, delegate(int i)
                {
                    if (i % 2 == 0)
                    {
                        return true;
                    }
                    return false;
                });
  • 相关阅读:
    文件操作3
    文件操作2
    kubernetes快速应用入门
    kubeadm初始化kubernetes集群
    kubernetes基础概念
    变量
    字面值
    关键字
    标识符
    Ubuntu安装MySql5.7
  • 原文地址:https://www.cnblogs.com/gosky/p/6038660.html
Copyright © 2011-2022 走看看