我在处理装箱/拆箱的C#任务时遇到了麻烦。以下是方向:
我遇到的麻烦是声明一个没有指定数据类型的列表,因此我可以将不同数据类型的多个值添加到对象的列表中(参见步骤2)。有什么建议吗?
答案 0 :(得分:0)
List<object> objectList = new List<object>();
objectList.Add("This is a string");
objectList.Add(64);
objectList.Add(154.2f);
一切都是对象。因此,您可以将其添加到对象列表中。
for(int i=0; i < objectList.Length; i++) {
Console.WriteLine(objectList[i].GetType().ToString());
}
for循环演示了如何获取当前元素的类型。
答案 1 :(得分:0)
在C#中,您可以将任何分配给object
类型。因此,您应将列表声明为:
List<object> myList = new List<object> { 7, 28, -1, true, "chair" };
由于object
是引用类型而int
类似7
,28
和-1
是值类型,因此它们被转换为&#34} 34;到运行时的引用类型。这被称为&#34;拳击&#34;。这里,7, 28, -1, true
被装箱,因为它们都是值类型。 "chair"
未加框,因为String
是参考类型。
此外,如果new List<object> { 7, 28, -1, true, "chair" }
语法对您来说很新,那么它与以下内容相同:
List<object> myList = new List<object>();
myList.Add(7);
myList.Add(28);
myList.Add(-1);
myList.Add(true);
myList.Add("chair");
答案 2 :(得分:0)
创建一个类型为对象的空列表
List<object> list = new List<object>();
将以下值添加到列表中:7,28,-1,true,&#34; chair&#34;
list.Add(7);
list.Add(28);
list.Add(-1);
list.Add(true);
list.Add("chair");
遍历列表并打印所有值并检查类型
foreach (object item in list)
{
if (item.GetType() == typeof(int))
{
//int type
}
else if (item.GetType() == typeof(bool))
{
// bool type
}
else if (item.GetType() == typeof(string))
{
//string type
}
else
{
//other type
}
}
Int类型的所有值一起输出并输出总和
int sum = list.Where(x => x.GetType() == typeof(int))
.Sum(x => int.Parse(x.ToString()));
我希望它会对你有所帮助。
答案 3 :(得分:0)
如果我理解正确,您希望将整数的值一起添加。如果是这种情况,以下代码将帮助您。
set.seed (1234)
optimize.portfolio.rebalancing (arg1, arg2, ..)
当项目被装箱时,仍然可以从继承自对象类的var items = new List<object> { 7, 28, -1, true, "chair" };
int sum = 0;
foreach(var item in items)
{
Console.WriteLine(item);
if (item.GetType() == typeof(int))
sum += (int)item;
}
// Now display the sum
Console.WriteLine($"The sum is: {sum}");
方法获取类型信息。你只需要看看它是否是一个整数,你就可以继续投射它并将它加到你的总和中。