我有一个ID号的CSV文件,我需要将其作为IEnumberable<int>
。我试图尽可能简单地从A转到B,并提出了以下想法:
Global.migrated = File.ReadAllText(Global.migrationList).Split(',').Cast<int>().ToList<int>();
但是,当我运行此命令时,我被告知Cast无效。我还尝试读取String列表并将其强制转换为int:
List<string> myTemp = File.ReadAllText(Global.migrationList).Split(',').ToList<string>();
Global.migrated = myTemp.Cast<int>();
但这会引发以下错误:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<int>' to 'System.Collections.List<int>.' An explicit conversion exists. Are you missing a cast?
我不明白 IEnumerable<int>
在这种情况下,我尝试投射的对象不是。应该是一个List<string>
。恐怕我缺少有关投射工作原理的重要信息。
您需要转换对象,而不是强制转换它。
File.ReadAllText(Global.migrationList).Split(',')
.Select(x=> Convert.ToInt32(x)).ToList();
强制转换与转换的区别在于字符串值是字符串,而就CLR而言,不是数字。如果对象正在施放是float
,decimal
,double
或任何数字类型,然后投将正常工作。但是由于对象是string
CLR,因此无法强制转换对象。但是,您可以将转换为string
,integer
从而将实际解析该对象并返回一个新的对象,而不仅仅是转换其CLR类型。
尽管您可能认为转换和转换在实际使用中非常相似,但它们与CLR截然不同
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句