以下代码给出了一个InvalidCast例外
int newValue = new List<decimal>() { 6m }.Cast<int>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
即使decimal可以int投入,为什么不能在列表中完成?
编辑:为了澄清这个问题,我想知道为什么等式的演员部分会引发异常.刚刚运行new List<decimal>() { 6m }.Cast<int>().ToList()也会给出一个InvalidCast例外
你需要:
new List<decimal>() { 6m}.Select(d => (int)d).ToList<int>();
Run Code Online (Sandbox Code Playgroud)
要么
new List<decimal>() { 6m}.ConvertAll(d => (int)d);
Run Code Online (Sandbox Code Playgroud)
Select与任何使用IEnumerable,ConvertAll只会使用List
.Cast 当您需要处理(例如)数组列表的成员时,应该使用它们,就像它们是强类型一样.
感谢@hvd纠正我