我正在尝试学习C#装箱和拆箱概念。我用整数填充了对象列表,然后我想将它们总结为控制台输出的结果。
List<object> listOfObjects = new List<object>();
//var listOfObjects = new List<object>();
//adding first string to list
listOfObjects.Add("First string");
//adding integers to list
for (int j = 0; j < 5; j++)
{
listOfObjects.Add(j);
}
listOfObjects.Add("Second string");
for (int k = 5; k < 10; k++)
{
listOfObjects.Add(k);
}
foreach (var obj in listOfObjects)
{
Console.WriteLine(obj);
}
var sum = 0;
for (var l = 0; l < 4; l++)
{
sum += (int)listOfObjects[l];
}
Console.WriteLine(sum);
但是输出抛出异常
抛出异常:ConsoleApp.exe中的'System.InvalidCastException'发生类型为'System.InvalidCastException'的未处理异常]
sum += (int)listOfObjects[l] // this unboxing cause compile error
有人知道为什么吗?我使用了MSDN resource中的示例。
问题是这样的行:
由于您的listOfObjects
是其内容为List
类型的object
,因此可以向其中添加任何内容。首先添加一个string
,它是一个对象。然后,添加一堆类型为int
的数字,这是值类型
''System.InvalidCastException'->表示您进行了错误的转换。