我有一个对象定义为:
readonly List<object> Params;
我需要将列表中存储的值作为整数获取,但我尝试过的所有类似Convert
类的转换方法,使用(int)
进行显式类型转换都会出现以下错误:
未处理的异常:System.InvalidCastException
我尝试打印元素,它给了我对象的整数值,但复制列表会保留readonly
属性,我无法在程序中使用该值。
答案 0 :(得分:2)
您可以使用Linq
执行此操作,例如,添加此命名空间
using System.Linq;
并尝试使用Cast<T>
方法进行转换,
List<int> ints = Params.Cast<int>();
如果您需要针对示例执行更具体的操作,也可以使用Select
方法:
List<int> ints = Params.Select(x => {
// its a scope, and you can do it here...
if (something)
return (int) x;
else if (other condition)
return int.Parse(x.ToString());
return x; // other custom conversions...
}).ToList();
答案 1 :(得分:1)
如果列表中的元素是字符串,请使用
int value = int.Parse((string)Params[i]);
如果列表中的元素是整数,请使用
int value = (int)Params[i];
答案 2 :(得分:0)
readonly
对列表中存储的值完全没有影响。它仅适用于List
对象,但不适用于其内容。所以忘记它,没有错。
相反,必须存在一个转换问题,其中至少有一个值存储在Params
中(顺便说一下:例外清楚地说明了这一点)......
您可以使用int.TryParse(...)
找出它的值。