目前学到的转换小记

list实现了IEnumerable泛型接口,所以list拥有Cast方法,然而转换给的时候如果类型不匹配就会转换失败

OfType方法会忽略掉不能转换的元素.

这让我想起了 is和as的区别  as转换失败会返回null 而is会报异常

// ArrayList list = new ArrayList();
            // list.Add(1);
            // list.Add(10);
            // list.Add(100);
            // list.Add("1000");

            // //Cast<T>()会把序列中的所有元素都转换,如果类型不匹配,会转换失败
            // //报异常。
            // IEnumerable<int> IE = list.Cast<int>();

            // foreach (var item in IE)
            // {
            //     Console.WriteLine(item);
            // }

            // //因为只有IEnumerable<T>才有这些扩展方法可调用
            //// Console.WriteLine(IE.First());


            //OfType()
            ArrayList list = new ArrayList();
            list.Add(1);
            list.Add(10);
            list.Add(100);
            list.Add("1000");

                    //OfType<T>()会忽略不能转的。
            IEnumerable<int> IE = list.OfType<int>();
            foreach (var item in IE)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();

posted @ 2011-05-19 18:41  winchou  阅读(175)  评论(0编辑  收藏  举报