2014-09-16 2 views
0

В случае ситуаций использовать параметры типа несколько Params в методах, что является альтернативным, потому что я получаю ошибку при попытке использовать параметры типа несколько ParamsНесколько параметров типа PARAMS в mehods в C#

+1

показать свой код. –

+0

Опубликовать свой заголовок метода –

+3

Зачем вам нужны несколько параметров типа параметров .. –

ответ

1

Используйте простые массивы вместо:

public void Method(/*remove params*/ string[] first 
        , /*optionally remove params*/ int[] second 
       ) 
{ } 

Вызов его:

Method(new string[] { ... }, new int[] { ... }); 

Необязательно, вы можете оставить последний params как есть, так как он может быть только один по методу и должен быть последним, согласно MSDN:

Никакие дополнительные параметры не допускаются после Params ключевого слова в объявлении метода, и только один параметры ключевых слов допускается в объявлении метода.

1

Для упрощенного использования я бы воспользовался решением Патрика Хофмана. Хотя, всякий раз, когда вы хотите сделать что-то более специфичное для конкретного типа и включающее более широкий диапазон типов, я бы сказал, что вы должны использовать params.

public class Bar { } 

    public void Foo(params object[] objs) 
    { 
     foreach(object obj in objs) 
     { 
      Type typeofObject = obj.GetType(); 
      if (typeofObject == typeof(string)) 
      { 
       // Its a string 
      } 
      else if (typeofObject == typeof(int)) 
      { 
       // Its an integer 
      } 
      else if (typeofObject == typeof(Bar)) 
      { 
       // Its an Bar object 
      } 
     } 
    } 

Вызов метода:

 Bar bar = new Bar(); 
     this.Foo("hi", 1, bar); 

Но опять же, это не является правильным решением, если у вас есть только 2/3 типов.

+0

'OP использует 2'? Я действительно не получаю эту часть, 2 что? Типы? Он сказал несколько типов, которые могут быть 5 или даже 10. –

+0

Тогда мой код отвечает на его вопрос? Он может поставлять все типы, которые он хочет для моего метода, но, как я сказал: это зависит от того, как он хочет использовать свои типы внутри метода. –

Смежные вопросы