2016-10-18 6 views
1

C#文字列配列の初期化を簡素化します。 C#で、以下のコードを最適化する方法はありC#簡略化文字列配列の初期化

string[] createdBy = new string[totalRowCount]; 
for (long i = 0; i < totalRowCount; i++) 
{ 
    createdBy[i] = userName; 
} 

また

int?[] defaultInd = new int?[totalRowCount]; 
     for (long i = 0; i < totalRowCount; i++) 
     { 
      if (i == 0) 
      { 
       defaultInd[i] = 1; 
      } 
      else 
      { 
       defaultInd[i] = 0; 
      } 
     } 
+0

ジャークではありませんが、以下の回答が必要なものを提供するので、いくつかの代替アドバイスを提供したいだけです。あなたは賢明な統語的砂糖よりも読みやすいようにすべきです。私は、短縮された方法を使用することで顕著なパフォーマンスの向上があるとは思っていません。あなたが構文にあまり慣れていないと仮定してから何かが間違っていれば、デバッグを難しくしています。ちょうど私の2セント;-) – Equalsk

答えて

3
string[] myIntArray = Enumerable.Repeat(userName, totalRowCount).ToArray(); 
1

両方の例ではループのためにそれを簡素化する多くの方法がありません、あなたはEnumeration.Rangeを使用しない限り、他の回答に示されているように。反復配列を構築するために

2

あなたはEnumerable.Rangeを使用することができます:しかし、あなたの第二の例では、あなたは三項演算子を使用することができます最初のラムダ式は、インデックスの値を使用しない方法

string[] createdBy = Enumerable.Range(0, totalRowCount) 
    .Select(i => userName) 
    .ToArray(); 
int?[] defaultInd = Enumerable.Range(0, totalRowCount) 
    .Select(i => i==0 ? (int?)1 : 0) 
    .ToArray(); 

注意i、すべての要素が同じ文字列に設定されているためです。