扩展方法、泛型、委托,的小案例

1、现有一个字符串集合,集合中存的是数字,把大于等于2的数值,打印出来,需要用到扩展方法、泛型、委托

class Projram{

  static void Main(String[] args){

    //定义一个集合,

    List<string> list = new List<string>{"1","3","5","6","7"};

    //var okList = list.GetList(IsOk);

    //var okList = list.FindAll(IsOk);

    //var okList = list.FindAll(a =>{ if(int.Parse(a) >= 2) return true;return false; });

    //var okList = list.FindAll(a=>int.Parse(a)>=2);

    foreach(item in okList){

      console.writeLine(item);

    }

  }

  //定义一个方法判断是否大于2

  static bool IsOk(string str){

    if(int.parse(str)>=2)

      return true;

    return false;

  }

}

//给list定义一个扩展方法(扩展方法的三要素,静态类、静态方法、this关键字)

//一般情况下,将扩展类的方法和要扩展的类的命名空间一致

namespace System.Collections.Generic

{

  //方法签名(安全的方法指针)

  public delegate bool okdel(T obj);

  public static class ListExt{

    public static List<T> GetList<T>(this List<T> list,del){

      List<T> resultList = new List<T>();

      foreach(var item in list){

       if(del(item))

        resultList.add(item);

      }

      return resultList;

    }

  }

}

原文地址:https://www.cnblogs.com/Little-Sky/p/10544500.html

时间: 2024-11-02 23:21:07

扩展方法、泛型、委托,的小案例的相关文章

复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc&lt;in T,out bb&gt; (T arg)

using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApplication8{ public static class ListExt { public delegate bb MyFunc<in T, out bb>(T arg); public sta

链式编程:泛型实现的扩展方法类

序言 本文分享一个用链式编程思想和泛型实现的扩展方法类,用于减少代码量,并提供更为清晰的业务逻辑代码表达. 概念 链式编程:将多个业务逻辑(方法)通过“.”(点号)串联起来的一种代码风格,形似链条,故称链式编程.核心思想在于每个方法均返回自身实例. 泛型:可以理解为是一个类的“篮子“”,只要符合约束的类均可以放置在该“篮子”里面. 扩展方法:向现有类添加方法. 根据泛型和扩展方法的特点,泛型+扩展方法实现了向所有符合约束的“类”添加方法,可减少重复代码量. (.Net语言提供了这么优雅的特性,刚

LINQ中的扩展方法

LINQ中的where(),OderByDescending().Select()并不是IEnumerable<T>的方法,却能使用这些方法,查阅了资料发现是用到了C#的扩展方法. 举个小例子: 定义一个静态类StringExtension和静态方法Foo,关键字this. public static class StringExtension { public static void Foo(this string s) { Console.WriteLine("Foo invok

泛型委托 Predicate/Func/Action

Predicate 泛型委托  表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素.看看下面它的定义: // Summary:    //     Represents the method that defines a set of criteria and determines whether    //     the specified object meets those criteria.    ////

泛型集合的静态扩展方法

C# 中的泛型集合提供了很多基于 Enumerable 的静态扩展方法,例如  Find,  OrderBy , Average ,Distinct 等,在使用基础数据类型的集合时,可以直接调用这些方法,但如果是自定义类型就应当根据扩展方法所要求的接口,实现自定类型的扩展接口类,其实质就是使用扩展类的实例方法完成特定的操作逻辑,否则对集合的操作将是无效的.本文以 OrderBy 为例进行说明 . 首先需要一个自定义的类 ,这是一个表示自然人属性的简单类,列出了姓名.年龄和性别(这里使用了枚举类型

泛型List集合转化为DateTable的扩展方法

文章出处:http://www.codeproject.com/Tips/867866/Extension-Method-for-Generic-List-Collection-to-Da 这段代码是能够帮助你把泛型集合List转出成DataTable的扩展方法. 背景: 不知道你是否知道这个扩展方法,但是你可以不做任何修改的去使用下面这个类的代码. 使用代码:   using System; using System.Collections.Generic; using System.Comp

委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式

引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录下来,以备复习使用. 委托: 日常工作中,常常见到委托用在具体的项目中.而且委托使用起来相对来说也是非常简单的,下面列举一个委托实例用以说明如何使用委托,代码如下: class Program { public delegate int CalculateDelegate(int x, int y)

使用Linq扩展方法时容易忽略的小问题

问题重现 下面直接给出用于说明文章主题的完整代码. //************************************************************ // // Linq扩展方法示例代码 // // Author:三五月儿 // // Date:2014/10/01 // // http://blog.csdn.net/yl2isoft // //************************************************************

C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法

使用C#实现加减乘除算法经常被用作新手练习.本篇来分别体验通过委托.接口.匿名方法.泛型委托来实现. 使用委托实现 加减乘除拥有相同的参数个数.类型和返回类型,首先想到了使用委托实现. //创建一个委托 public delegate decimal MathOperation(decimal left, decimal right); //创建方法参数和返回结果符合委托的定义 public static decimal Add(decimal left, decimal right) { re