0

我正在尝试创建一个包含两个值的自定义列表。

例如我有一个枚举:

public enum Type
{
   name,
   number,
   surname
}

所以我想做的是有一个列表,其中包含上面的枚举、类型和一个与之配套的值。

例如:

List<Type type, object value>

请协助我如何实现这一目标。

4

3 回答 3

4

有很多方法可以给这只猫剥皮。

如果您只需要在单个方法中使用此列表,则一个不错的选择是使用List<Tuple<Type,object>>. 请参阅TupleMSDN。

如果您确实需要跨方法/类共享列表,我建议使用自定义类型来保存这两个值:

public class MyValues
{
  public Type TheType { get; set; }
  public object TheObject { get; set; }
}

并将其与List<MyValues>.

注意:您将其object用作泛型类型是一种代码异味。它打败了使用泛型的原因。

于 2012-12-05T09:57:12.767 回答
2

您可以创建一个通用列表,包括通用 KeyValuePair 或元组:

List<KeyValuePair<Type, object>> myList = new List<KeyValuePair<Type, object>>();

List<Tuple<Type, object>> myList = new List<Tuple<Type, object>>();

对于您的问题,这可能是一个简单的解决方案。

于 2012-12-05T09:57:52.377 回答
0

如果 Type 在集合中是唯一的,您可以使用 Dictionary:

 Dictionary<Type,object>

如果 Type 不是唯一的,您可以使用 Tuple:

 List<Tuple<Type,object>>

或者您可以创建自己的课程,并按照@oded 的建议创建您的课程类型列表:

 List<MyValues>
于 2012-12-05T09:59:19.517 回答