IEnumable 之cast

原创 2018年04月16日 17:50:01

 IEnumerable<XML_station> ie = StationPanel.Controls.Cast<XML_station>().Reverse();

StationPanel.Controls这个是容器的控件集合,都是XML_station类型,

要把这个集合的控件倒序。StationPanel.Controls.Reverse()     是不存在的。只能用上述方法。

为什么这里要cast一下呢?StationPanel.Controls 怎么没有Reverse 方法?

Controls 类型是ControlCollection。

public class ControlCollection : ArrangedElementCollection, IList, ICollection, IEnumerable, ICloneable

而这个类不是泛型类。

Reverse是IEnumerable<T>的扩展方法。为什么要泛型类呢?这就是泛型的威力了。

抽取逻辑有2种:一个是委托,一个泛型。有异曲同工之妙。

cast源码如下:

 [__DynamicallyInvokable]
    public static IEnumerable<TResult> Cast<TResult>(this IEnumerable source)
    {
        IEnumerable<TResult> enumerable = source as IEnumerable<TResult>;
        if (enumerable != null)
        {
            return enumerable;
        }
        if (source == null)
        {
            throw Error.ArgumentNull("source");
        }
        return Enumerable.CastIterator<TResult>(source);
    }

    private static IEnumerable<TResult> CastIterator<TResult>(IEnumerable source)
    {
        foreach (object item in source)
        {
            yield return (TResult)item;
        }
    }






实现IEnumable以迭代对象示例

using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace S...
  • lianchangshuai
  • lianchangshuai
  • 2010-08-13 18:42:00
  • 1698

yield(c#)msdn

yield 关键字,指示所在的方案、运算符或 get 访问器是迭代器。 使用的迭代器对集合的自定义迭代。 下面的示例演示 yield 语句的两种形式。 复制 ...
  • zlzzlzzlz
  • zlzzlzzlz
  • 2013-03-14 16:53:08
  • 580

IQueryable 和 IEnumable

public class student { public string Name { get; set; } public int Id { get; set; } } var st = ...
  • qqqgg
  • qqqgg
  • 2018-04-11 15:27:07
  • 5

SQL中convert和cast的区别

  • 2010年08月13日 15:56
  • 21KB
  • 下载

深入理解IEnumerable和IQueryable两接口的区别

无论是在ado.net EF或者是在其他的Linq使用中,我们经常会碰到两个重要的静态类Enumerable、Queryable,他们在System.Linq命名空间下。那么这两个类是如何定义的,又是...
  • ydm19891101
  • ydm19891101
  • 2016-03-24 13:55:58
  • 5918

C# DataTable 和List之间相互转换的方法[转]

一、List/IEnumerable转换到DataTable/DataView 方法一: 1 2 3 4 5 6 7 8 ...
  • zhongxia245
  • zhongxia245
  • 2014-03-02 22:37:52
  • 824

SQL中的cast和convert区别

  • 2011年04月22日 11:37
  • 61KB
  • 下载

postgresql中的cast

  • 2017年08月27日 16:32
  • 13KB
  • 下载

SQL.Mysql中Cast()函数的用法

1
  • xiaokangmiclong
  • xiaokangmiclong
  • 2015-11-16 17:28:34
  • 23720
收藏助手
不良信息举报
您举报文章:IEnumable 之cast
举报原因:
原因补充:

(最多只允许输入30个字)