将Enum的所有选项填充到Nullable <enum>数组中

时间:2018-04-28 19:28:56

标签: c# arrays enums

我有一个Enum需要进入Array Nullable

StatusType?[] statusTypes = null; //Array to fill

我试图像这样填写statusTypes

statusTypes = (StatusType?[])Enum.GetValues(typeof(StatusType))

我收到以下错误:

  

System.InvalidCastException:&#39;无法转换类型为&#39; x.Entities.Enums.StatusType []&#39;的对象输入&#39; System.Nullable`1 [x.Entities.Enums.StatusType] []&#39;。&#39;

如何使用Enum?[]填充Enum[]?我确定这是一个简单的解决办法,但我现在已经被它捣乱了一段时间。谢谢。

2 个答案:

答案 0 :(得分:3)

使用LINQ的Cast<T>()扩展方法并提供目标类型:

statusTypes = Enum.GetValues(typeof(StatusType)).Cast<StatusType?>().ToArray();

答案 1 :(得分:0)

你不能只是施放数组。类型不兼容。您可以使用Array.ConvertAll进行转换:

Array.ConvertAll((StatusType[])Enum.GetValues(typeof(StatusType)), x => (StatusType?)x);