将不同类型的枚举值的数组传递给函数

时间:2014-10-20 12:40:22

标签: c# arrays function enums parameter-passing

有人可以告诉我是否可以将Arrays Enumpublic enum FirstEnum { FirstValue, SecondValue } public enum SecondEnum { FirstValue, SecondValue } 个值传递给同一个函数。

示例:

我有两个枚举:

public FirstEnum[] first = new FirstEnum[]{ FirstEnum.FirstValue,
                                            FirstEnum.FirstValue,
                                            FirstEnum.SecondValue };

public SecondEnum[] second = new SecondEnum[]{SecondEnum.FirstValue,
                                              SecondEnum.SecondValue,
                                              SecondEnum.SecondValue }

我有两个阵列:

public void WorkWithEnums(Enum[] myEnumValues)
{
   // ....    
}

现在我想要一个适用于它的功能:

WorkWithEnums(first);
WorkWithEnums(second);

我喜欢将我的数组传递给这个函数:

object[]

但不知怎的,它不起作用。如果我尝试使用Enum[]代替{{1}}

,也不会

任何想法?

2 个答案:

答案 0 :(得分:1)

您的代码无效,因为covariance is not supported for value types(枚举是值类型)。

所以你可以使用:

WorkWithEnums(first.Cast<Enum>().ToArray())

答案 1 :(得分:0)

我建议将通用方法与“enum T”一起使用。例如,请参阅此问题的答案:Can you loop through all enum values?

无论如何,这里的主要影响者是你的用例。 WorkWithEnums()方法中预期的场景是什么?