zoukankan      html  css  js  c++  java
  • C# 泛型3类型转换

    使用List<T>de ConvertAll()方法,可以吧任意类型的集合转换为另一种类型.OnvertAll()方法使用Converter委托.

    public sealed delegate TOutput Converter<TInput,TOutput>(TInput from);

    在转换中使用了TInput和TOutput泛型类型.TInput是委托方法的参数.TOutput是返回类型.
    我们现在把Racer类型转换为Person类型.

    public class Person
    {
       
    private string firstname;
       
    private string lastname;
       
       
    public Person(string firstname,string lastname)
       
    {
           
    this.firstname=firstname;
           
    this.lastname = lastname;
       }

       
       
    public override string ToString()
       
    {
           
    return firstname+" "+lastname;
       }

    }
                //在调用racer.ConvertAll<Person>()方法时转换
                List<Person> persons = racer.ConvertAll<Person>(delegate(Racer r){
                    
    int ixSeparator=r.Name.LastIndexOf(' ')+1;
                    
    string lastname = r.Name.Substring(ixSeparator,r.Name.Length-ixSeparator);
                    
    string firstname=r.Name.Substring(0,ixSeparator-1);
                    
    return new Person(firstname,lastname);
                }
    );
                persons.ForEach(
    delegate(Person p) { Console.WriteLine(p); });


    这样就把姓名分离,大家看出来其实委托里面的其实就是分离的方法,然后在New一个新的实例赋给泛型,他为什么要用委托呢?如果我们用racer.ForEach(),然后根据条件吧姓名分开,效率书不是一样呢.

  • 相关阅读:
    C语言和go语言之间的交互
    Elasticsearch笔记九之优化
    Elasticsearch笔记八之脑裂
    Elasticsearch笔记七之setting,mapping,分片查询方式
    Elasticsearch笔记六之中文分词器及自定义分词器
    Elasticsearch笔记四之配置参数与核心概念
    Elasticsearch笔记三之版本控制和插件
    Elasticsearch笔记二之Curl工具基本操作
    Elasticsearch笔记五之java操作es
    Python处理Excel表格
  • 原文地址:https://www.cnblogs.com/whitetiger/p/1055804.html
Copyright © 2011-2022 走看看