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