Вот мой сценарий,Почему параметры не принимают общие типы?
Функция:
public String StringConcat(params String[] parameter)
{
String l_strReturnValue = String.Empty;
for (Int32 l_nIndex = 0; l_nIndex < parameter.Length; l_nIndex++)
{
l_strReturnValue += parameter[l_nIndex];
}
return l_strReturnValue;
}
И я звоню это как
List<String> l_lstTest = new List<string> { "A", "B", "C" };
String l_strString = StringConcat(l_lstTest.Select(X => X).ToArray());
возвращает значение, как "ABC"
Но его показ ошибка, если я вызываю функцию без типа convrsion, как
String l_strString = StringConcat(l_lstTest.Select(X => X));
Как использовать функцию без преобразования?
Примечание 1:
В XDocument Add
методы - они использовали как params
, но нет таких потребностей преобразования типов.
Примечание 2:
Цель этого поста не добавлять строки, просто хочу, чтобы больше узнать о пределах params
.
Спасибо .... не могли бы вы отправить сообщение, почему вы предложили 'Foreach' вместо' for'loop. 'Foreach' - тип объекта .... так что это будет больше времени по сравнению с типом индекса (' for') ??? –
@Pramodh: 'foreach' - абстракция более высокого уровня - код чище и выражает то, что вы пытаетесь достичь более близко. Фактически, цикл 'foreach' над массивом будет использовать указатель массива в любом случае, но вы обычно не должны даже заботиться о производительности на этом уровне детализации, пока не обнаружите, что есть проблема. Производительность вашего кода * ужасная * для больших массивов, из-за использования конкатенации строк - любая разница между 'foreach' и' for' будет * ничего * по сравнению с этой неэффективностью. –