我正在尝试创建一个包含两个值的自定义列表。
例如我有一个枚举:
public enum Type
{
name,
number,
surname
}
所以我想要做的就是有一个列表,它将保存上面的枚举,类型和值。
例如:
List<Type type, object value>
请协助我如何完成此事。
答案 0 :(得分:4)
有很多方法可以给这只猫上皮。
一个不错的选择,如果您只需要在单个方法中使用此列表,则使用List<Tuple<Type,object>>
。请参阅MSDN上的Tuple
。
如果您确实需要跨方法/类共享列表,我建议使用自定义类型来保存这两个值:
public class MyValues
{
public Type TheType { get; set; }
public object TheObject { get; set; }
}
并将其与List<MyValues>
一起使用。
注意:您使用object
作为通用类型是代码气味。它打败了使用泛型的原因。
答案 1 :(得分:2)
您可以创建一个包含通用KeyValuePair或Tuple的通用列表:
List<KeyValuePair<Type, object>> myList = new List<KeyValuePair<Type, object>>();
List<Tuple<Type, object>> myList = new List<Tuple<Type, object>>();
这可能是解决您问题的简单方法。
答案 2 :(得分:0)
如果Type在集合中是唯一的,您可以使用Dictionary:
Dictionary<Type,object>
如果Type不是唯一的,你可以使用元组:
List<Tuple<Type,object>>
或者您可以创建自己的类,并为您的类提供类型列表,如@oded建议:
List<MyValues>