所以我目前正在学习C#中的LINQ,我正在尝试这个Cast<>
扩展方法,它似乎并不真正有效。当我尝试遍历IEnumerable<int>
值时,它不起作用,它给了我错误:
System.InvalidCastException(“指定的强制转换无效”)。
这是代码:(我也尝试过将“result”变量转换为ToArray()
数组,但无论我怎么尝试,它仍然不起作用)
List<string> strings = new List<string>(){ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10 };
IEnumerable<int> result = strings.Cast<int>();
foreach(int number in result){
Console.WriteLine(number);
}
Console.ReadKey();
我也试过使用'var'而不是'int'当试图通过IEEEresultvariable,但它仍然不工作,这里是它向我展示的图像:
2条答案
按热度按时间oxosxuxt1#
你应该使用
int.TryParse
。所以你可以这样实现强制转换:或
mrphzbgm2#
Cast不是用于值类型的转换,你不能使用Cast将string转换为int,这个方法用于转换一些没有实现IELTS的数组类型,例如。这样你就不能将LINQ和ArrayList一起使用。如果你想用LINQ语法查询ArrayList,你可以使用Cast将ArrayList转换为Escort,然后LINQ查询就可用了。请参阅official document