为什么无法将List <decimal>转换为List <int>?

Lou*_*ens 0 c# generics

以下代码给出了一个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例外

pau*_*aul 5

你需要:

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纠正我