• 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(),然后根据条件吧姓名分开,效率书不是一样呢.

  • 相关阅读:
    Ubuntu设置静态IP,解决重启后需要重新设置的问题。
    Ubuntu网速慢的问题
    WinPcap编程4——捕获数据包
    有关汇编的文章与代码
    WinPcap编程1——简介
    野外生活完全攻略
    户外与学习方法
    躲猫猫是什么意思
    C++各大有名库的介绍——综合
    WinPcap编程3——获取网络适配器列表
  • 原文地址:https://www.cnblogs.com/whitetiger/p/1055804.html
Copyright © 2020-2023  润新知