ここに私のシナリオがあり、なぜparamsはジェネリック型を受け入れないのですか?
機能:
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;
}
と私はそれが "ABC"
しかし、その上映として値を返します
List<String> l_lstTest = new List<string> { "A", "B", "C" };
String l_strString = StringConcat(l_lstTest.Select(X => X).ToArray());
のようにそれを呼んでいますエラーが発生しました。タイプなしの関数を呼び出すとエラーが発生します
String l_strString = StringConcat(l_lstTest.Select(X => X));
どのように変換せずに関数を使用するには?
注1:XDocument Add
方法において
- それらはparams
ように使用しているが、型変換のこのようなニーズは存在しません。
注2:
この記事の目的はただparams
の限界についての詳細を学びたい、文字列を追加することではありません。
ありがとうございます。あなたは 'for'loopの代わりに' Foreach'を提案した理由を投稿してください。 'Foreach'はオブジェクト型です....インデックス型(' for')ループに比べて時間がかかります??? –
@Pramodh: 'foreach'はより高いレベルの抽象化です。コードはより洗練されており、より綿密に達成しようとしていることを表現しています。実際には、配列上の 'foreach'ループは配列インデクサーを使用しますが、問題が見つかるまでその詳細レベルでのパフォーマンスについても気にするべきではありません。文字列連結を使用するため、大規模配列の場合、コードのパフォーマンスは*恐ろしい*です。foreachとforの違いは、その非効率性に比べて何もありません。 –