2011-01-21 6 views
1

У меня есть метод: соответствующую часть нижеC# Метод перегрузки против Param Ключевое слово

void foo(various parameters) 
{ 
    tsk.run(various parameters); 
} 

Теперь параметры с tsk.run нужно разнесены как таковой:

tsk.run(param 1 + " " param2 + " " param3);, etc depending on how many parameters. 

Параметры образуют одну непрерывная строка, которая используется в приложении командной строки.

В лучшем случае будет 4 параметра, поэтому лучше всего использовать метод перегрузки для каждого. Или есть способ использовать ключевое слово Param, чтобы взять параметры и добавить их в метод tsk.run().

Стоит ли использовать параметр [], а затем переходить через конкатенацию в строку и затем запускать ее?

ответ

7

Вам не нужно цикл:

void Foo(params string[] args) 
{ 
    tsk.run(String.Join(" ", args)); 
} 
+0

Ничего, я только что узнал что-то полезное. Благодаря! Я думал, что теперь буду знать String. – magnattic

+0

на самом деле его tsk.run (String.Join ("", args)); –

+0

@ Валентин Ха-ха! –

-1
void foo(params string[ ] parameters) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (string parameter in parameters) 
    { 
     sb.Append(parameter); 
     sb.Append(" "); 
    } 

    tsk.run(sb.ToString()); 
} 
+2

init sb first;) –

+0

Конечно: D А-ха-ха-ха - набрав слишком быстро! – Nick

+0

Вам лучше использовать 'string.Join', чтобы вы не получили этот уродливый трейлинг-разделитель;) –

1

Если вы знаете количество аргументов использовать перегрузку, как это будет более эффективным.

Компилятор сможет напрямую вызвать правильный метод, и вы можете назначить значения по умолчанию.

Если paramlist создан динамически и может отличаться от длины, используйте параметры.

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

-1

Как это:

 
void foo&ltT>(params T[] parameters) 
{ 
    tsk.run(string.Join&ltT>(" ", parameters)); 
} 
0

хорошо вы могли бы сделать это с помощью

(params object[] parameters) 

затем внутри метода создания Strigbuilder и присоединять каждый из параметров из списка к нему в нужном Вам способом.

Непонятно, должны ли использоваться все ваши параметры, или они действительно различны по типу и сигнатуре объекта. Если параметры разные по типу, я думаю, что при использовании метода params с объектами возникнет больше проблем, чем с помощью справки.

Если это все строки, я думаю, что params - идеальное решение для этой ситуации.

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