2013-05-12 2 views
8

foreachループで配列の項目を表示するプログラムを書いています。C言語でstringArrayでforeachループを使う#

各要素に文字列 "sad"を追加して配列の要素を変更したかったのですが、プログラムを実行すると配列は同じままです。あなたのコード内のどの時点で

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] stringArray = {"hey", "Tom"}; 

      for (int i = 0; i < stringArray.Length; i++) 
      { 
       stringArray[i] += " dad"; 
       Console.WriteLine(stringArray[i]); 
      } 

      Array.Resize(ref stringArray, stringArray.Length + 1); 

      // Add bob to the last element of the array 
      stringArray[stringArray.Length - 1] =" bob"; 

      foreach (string s in stringArray) 
      { 
       string b = s + "sad"; 
       Console.WriteLine(s); 
       //Console.WriteLine(stringArray); 
      } 
     } 
    } 
} 
+0

あなたは、文字列B = sの+「悲しい」を変更する必要があります。文字列s + = "悲しい"に; –

+0

可能なtypo 'Console.WriteLine(b);' Console.WriteLine(s);の代わりに – Emre

答えて

3
string b = s + "sad"; 

Console.WriteLine(s); 

//Console.WriteLine(stringArray); 

あなたは、配列内の値を変更します。文字列"sad"を連結して配列の各値から新しいstringを作成します。

ソリューション

あなたはfor-each変数を変更することはできません。

'foreach反復変数'であるため、 's'に割り当てることはできません。

代わりに、単純なforループを解決してください。コードのこの部分で

for(int x = 0; x < stringArray.length; x++) 
{ 
    stringArray[x] = stringArray[x] + "sad"; 
} 
0

ルック:

string b = s + "sad"; 
Console.WriteLine(s); 

あなたは、文字列"sad"s内の文字列を連結し、変数bに保管されています。次に、変数sの内容を表示します。変数bの内容を表示する場合は、各文字列の末尾にsadが表示されます。

+0

大丈夫、ありがとう、私はそれを得た! – user2371290

5
 foreach (string s in stringArray) 
     { 
      string b = s + "sad"; 
      // ... 
     } 

ここでは、文字列配列の文字列とはまったく関係のない新しい文字列を作成しています。あなたは古い文字列を変更していません(文字列は変更できません)。あなたは、単に床の上に、この新しい長い文字列をドロップする - あなたは、配列を更新していないなど

代わりのようなもの試してみてください:このは新しい文字列と配列内のすべてのアイテムを置き換え

for(int i = 0 ; i < stringArray.Length ; i++) 
{ 
    stringArray[i] = stringArray[i] + "sad"; 
} 

を。イテレータを壊す可能性があるforeachで反復しながらリスト/コレクション/配列などを更新することはできません。したがって、代わりにforループ。あなたは単にあなたが望むものを達成するためにLINQを使用することができ別にクリスが言ったことから

7

、:

string[] newStringArray = stringArray 
    .Select(s => s + "sad") 
    .ToArray(); 
関連する問題