C#概念拆箱

问题描述 投票:0回答:3

我正在尝试学习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中的示例。

c# boxing unboxing
3个回答
2
投票

问题是这样的行:


0
投票

由于您的listOfObjects是其内容为List类型的object,因此可以向其中添加任何内容。首先添加一个string,它是一个对象。然后,添加一堆类型为int的数字,这是值类型


-2
投票

''System.InvalidCastException'->表示您进行了错误的转换。

© www.soinside.com 2019 - 2024. All rights reserved.