【发布时间】:2012-09-11 12:17:27
【问题描述】:
我有一个名为 GroupItem 的类,我可以在这里存储任何类型,比如 int、string、decimal、datetime 等。然后,我有 GroupItems 可以存储任何 groupItem。我正在使用 arraylist 来存储所有 groupItem。
public class GroupItem<T>
{
private string heading;
private List<T> items = new List<T>();
public GroupItem() { }
public string Heading
{
get { return heading; }
set { heading = value; }
}
public List<T> Items
{
get { return items; }
set { items = value; }
}
public void Add(T value)
{
this.items.Add(value);
}
public T this[int index]
{
get
{
return this.items[index];
}
}
}
public class GroupItems
{
private string groupName;
private List<object> items = new List<object>();
public string GroupName
{
get { return groupName; }
set { groupName = value; }
}
public GroupItems() { }
public void Add(object value)
{
this.items.Add(value);
}
public object this[int index]
{
get
{
return this.items[index];
}
}
}
我想从 GroupItems 中检索。如何在 groupItems 中获取通用项目的值?
我现在在 groupitems 中插入两个项目,datetime 和 int。现在我想检索 groupitems[2] 值,但是我如何在不知道它是什么的情况下将其转换为 groupItem。甚至我们可以通过 getType().getGenericarguments()[0] 获得它的通用参数。但是我怎样才能基于它创建一个实例。
【问题讨论】:
-
不要使用
ArrayList,它已经过时了。有List<T>。 -
我确信许多关于 .net 的 CS 课程仍然是在考虑 .Net 1.1 的情况下教授的。没有泛型、LINQ 或 WPF。
-
我同意,如果您使用的是 .NET 2.0 或更高版本,则可以选择
List<T>,但无论如何,ArrayList没有被标记为过时即使在 .NET 4.0 中(甚至在 .NET 4.5 的预览文档中) -
康拉德,我同意你的看法。即使我可以使用 List
>.. 数组列表也没有问题。我想知道插入项目后,我怎样才能找回它?我可以将第一项与 int 一起使用,第二项与小数一起使用等等......我想根据插入的元素创建一个实例。 -
Raj,你说的“我怎样才能得到组项目中存储的项目”是什么意思?请解释您真正想要达到的目标以及对您造成任何问题的原因。