'System.InvalidCastException' -> говорит вам, что вы сделали неправильное приведение.
Так что, если мы возьмем особый диапазон предметов из списка, после приведение их к ( int ), тогда мы получим результат распаковка .
Поскольку бокс был сделан, когда вы добавили числа в Lis.
Надеюсь, что этот подробный ответ будет более дружелюбным.
List listOfObjects = new List (); // var listOfObjects = new List ();
//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++)
{
var a = listOfObjects[l].GetType();
if (a == typeof(int))
{
sum += (int)listOfObjects[l];
Console.WriteLine("I've get an integer type.");
}
Console.WriteLine("I've get only string type.");
}
Console.WriteLine(sum);
Console.Read();
Надеюсь, этот измененный образец поможет вам. Удачи!