代码如下:    class Program
    {
        static void Main(string[] args)
        {
            byte[] bytes = new byte[] { 1, 2, 3, 4 };
            foreach (byte b in bytes.Skip(1))
            {
                Console.WriteLine(b.ToString());
            } 
            Console.Read();
        }
    }
查看Skip方法,该方法居然属于System.Linq.Enumeralbe类,描述中说:
// Summary:
    //     Provides a set of static (Shared in Visual Basic) methods for querying objects
    //     that implement System.Collections.Generic.IEnumerable<T>.把byte[]数组换成List<byte>,同样可以使用Skip()方法,但Skip方法既不属于List<T>类,也不于其基类,请问谁知道这是什么原理呢?先谢谢了!

解决方案 »

  1.   

    Skip他是个扩展方法:
    public static IEnumerable<TSource> Skip<TSource>(
    this IEnumerable<TSource> source,
    int count
    )
      

  2.   

    static class MyLinq
        {
            public static bool SequenceEqual<T>(this ICollection<T> first,
                ICollection<T> second)
            {
                if (second.Count != first.Count)
                    return false;
                return Enumerable.SequenceEqual(first, second);
            }        public static bool SequenceEqual<T>(this IEnumerable<T> first,
                IEnumerable<T> second)
            {
                ICollection<T> list1 = first as ICollection<T>;
                ICollection<T> list2 = second as ICollection<T>;
                if (list1 != null && list2 != null)
                    return SequenceEqual(list1, list2);
                return Enumerable.SequenceEqual<T>(first, second);
            }
        }