如何在泛型列表中添加枚举
本文关键字:添加 枚举 列表 泛型 | 更新日期: 2023-09-27 18:02:06
如何在泛型列表中只添加一个enum项?
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;
}
可以像这样使用双强制转换:
list.Add((T)(object)ProcessorEnum.B2B);
在调用Add
之前转换为List<ProcessorEnum>
:
(list as List<ProcessorEnum>).Add(ProcessorEnum.B2B);
正如@Selman在他的回答中所示,您可以将其转换为object
然后转换为T
,但这涉及"装箱和拆箱"。您可以使用这个
list.Add((ProcessorEnum.B2B as T?).Value);
在这种情况下,列表需要是ProcessorEnum
值的列表。该方法实际上不是泛型的,因为它不能接受任何类型的列表。您只需将该方法设置为非泛型:
public List<ProcessorEnum> PopuleList()
{
return new List<ProcessorEnum>(){ProcessorEnum.B2B};
}