C#如何把List of Object转换成List of T具体类型
2015-05-30 08:25
387 查看
上周码程序的时候碰到个问题,因为设计上的约束,一个方法接受的参数只能为List<object>类型,然而该方法需要处理的真实数据则是确定的List<Currency>。然而C#不允许显示的直接转换类型,并且两个方向上都不可以操作。这个问题让我爆了一会儿,最后在MSDN上找到了一个OfType<T>的拓展方法可以完成这件事。
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { internal class Program { private static void Main(string[] args) { List<object> currencyListOfType = new List<object>() { new Currency(){Id = Guid.NewGuid(), Name = "a"}, new Currency(){Id = Guid.NewGuid(), Name = "b"}, new Currency(){Id = Guid.NewGuid(), Name = "c"} }; List<object> currencyListCast = new List<object>() { "a", "b", "c" }; //=>OfType如果元素存在转换不了,也不会出现异常;只转换成功的元素;如果转换不了currencies则为空的List,而不是NULL List<Currency> currencies = currencyListOfType.OfType<Currency>().ToList(); //=>Cast如果元素转换不了,则会失败。 List<Currency> currencies1 = currencyListCast.Cast<Currency>().ToList(); Console.WriteLine("currencies list:"); foreach (var item in currencies) { Console.WriteLine(item.Id); } Console.WriteLine("currencies1 list:"); foreach (var item in currencies1) { Console.WriteLine(item.Id); } Console.ReadLine(); } } public class Currency { public Guid Id { get; set; } public string Name { get; set; } } }
相关文章推荐
- Ljava.lang.Object; cannot be cast to com.bdqn.hibernate.entity.*
- 使用Objective-C的文档生成工具:appledoc
- Java Object类讲解 上帝类及其一些方法的分析
- 5.图片轮播器(scrollView的使用)
- 4.软件管理界面(九宫格)
- ActionScript 3.0 学习(一) Array、Vector以及Object学习
- Objective-c Category使用
- ArcSDE的SQL操作ObjectID获取方式
- OC学习篇之---Foundation框架中的NSObject对象
- file path: c++ #include vs. object-c #import
- Flask 中使用 JSON 响应页面的 Ajax 请求报错 TypeError: 'dict' object is not callable
- iOS Objective-C 身份证号码校验
- Objective-C中的self关键词
- Objective-C对象的申请空间与初始化
- WebService传输SoapObject数据出现 org.ksoap2.serialization.SoapObject cannot be cast to java.util.Vector的问题
- Java核心API -- 1(Object类)
- 浏览器提示Uncaught TypeError: object is not a function XXX onclick
- IOS开发系列—Objective-C之Foundation框架
- JQuery创建object 并自定义键、值(获取table中数据,封装成一个对象)
- UITableViewCell Property “icon” cannot be found in forward class object “DJWeiBo”