2014-10-20 3 views
2

Может ли кто-нибудь сказать мне, можно ли передавать разные значения Arrays из Enum значениям той же функции.Передача массивов различных типов значений перечисления функции

Пример:

У меня есть два перечислений:

public 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[]

Любые идеи?

+0

Что ошибка вы получаете? – Vajura

+0

Ошибка, которая у меня есть, заключается в том, что у вызова есть некоторые недопустимые аргументы. Что мне нравится делать, так это выяснить, что значения массива. Я также буду рад предложению, как преобразовать 'first' и 'second' в строковый массив. Нечто вроде: 'FirstValue' 'FirstValue' 'SecondValue' , но это для обоих перечислений. Целью является отправка значений в ту же функцию. – Neo

ответ

1

Ваш код не работает, потому что covariance is not supported for value types (перечисления являются типами значений).

Таким образом, вы можете использовать:

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

Я бы предложил сделать общий метод работы с «enum T». Например, см. Ответ на этот вопрос: Can you loop through all enum values?

И в любом случае, основной источник влияния здесь - ваш прецедент. Какой сценарий ожидается в методе WorkWithEnums()?