如何在通用列表中只添加一个枚举项?
public List<T> PopuleList<T>() where T : struct
{
List<T> list = new List<T>();
if (typeof(T) == typeof(ProcessorEnum))
{
list.AddRange(Enum.GetValues(typeof(T)) as IEnumerable<T>); // This work, but I need to add only one value.
list.Add(ProcessorEnum.B2B); // <- I need like this, but this give-me a compile error.
}
return list;
}
答案 0 :(得分:3)
你可以像这样使用双重演员:
list.Add((T)(object)ProcessorEnum.B2B);
答案 1 :(得分:0)
在致电List<ProcessorEnum>
之前投靠Add
:
(list as List<ProcessorEnum>).Add(ProcessorEnum.B2B);
答案 2 :(得分:0)
正如@Selman在他的回答中所示,您可以将其转换为object
然后转换为T
,但这涉及“拳击和取消装箱”。您可以使用此
list.Add((ProcessorEnum.B2B as T?).Value);
答案 3 :(得分:0)
在这种情况下,列表必须是ProcessorEnum
值的列表。该方法实际上不是通用的,因为它不能接受任何类型的列表。您应该简单地使该方法非通用:
public List<ProcessorEnum> PopuleList()
{
return new List<ProcessorEnum>(){ProcessorEnum.B2B};
}