2017-04-16 2 views
1

がどのように私は、ボタンのクリックイベントに初期化し、この配列を呼び出すことができ、フォームの他の部分にクリックメソッドで初期化を呼び出すことができます。C#Windowsフォーム - どのように私は配列は

private void button1_Click(object sender, EventArgs e) 
    { 
     int[] n = textBox1.Text.Split(' ').Select(int.Parse).ToArray(); 

     richTextBox1.Text += "Entered values: "; 

     foreach (int num in n) 
     { 
      richTextBox1.Text += num + " "; 
     } 

     richTextBox1.Text += "\n"; 
    } 

配列の他の部分に、別のクリックイベントを言います。

私はフォームクラスで配列を宣言しようとしましたが、配列のコードの他の部分に問題がある事前定義されたサイズを持つ必要があります。

編集:解決済み!みんなstackoverflowのおかげで。ソリューションとコメントは非常に参考になりました:D

+0

これはありません。クラス内で配列をnullとして定義し、それを使用しようとする前にヌルかどうかを調べることができます。次に、ユーザーがクリックしたときに上記の方法(int []ビットなし)を使用して配列値を設定します。 – john

答えて

1

あなたは、このように単にその寸法を指定せずにフォームのクラスの配列を宣言することができます。

int[] n = null; //choose better name, and comment the use of the variable. 

(例えばクリックイベントハンドラなど)のメソッドの残りの部分をこのようにそれを使用することができます:

private void someOtherButton_Click(object sender, EventArgs e) 
{ 
    if(n != null && n.Length > 0) 
    { 
     //do something with the array 
    } 
} 
代わりに
0

配列をフィールドにする必要があります(サイズが0の配列を初期化することができます。プログラムで問題がある場合は残りのコードを書き直す必要があります)。それは次のようになります。ちなみに

private int[] n = new int[0]; 
private void button1_Click(object sender, EventArgs e) 
{ 
    n = textBox1.Text.Split(' ').Select(int.Parse).ToArray(); 

、私は強く、アレイの「n」が、意味のある名前(例えば_splittedTb1Content)を呼び出すことではないことをお勧めしたいです。

0

使用ジェネリックコレクション型:

 private void button1_Click(object sender, EventArgs e) 
    { 
     List<int> n= textBox1.Text.Split(' ').Select(int.Parse).ToList(); 

     richTextBox1.Text += "Entered values: "; 

     foreach (int num in n) 
     { 
      richTextBox1.Text += num + " "; 
     } 

     richTextBox1.Text += "\n"; 
    } 

あなたが宣言することができますフォームクラスにnを入力してください:

List<int> n; 

長いリストのパフォーマンスを向上させるには、 "foreach"内でstringBuilderを使用することをおすすめします。長いリストを処理する場合は、次のコードを使用します。

 private void button1_Click(object sender, EventArgs e) 
    { 
     List<int> n= textBox1.Text.Split(' ').Select(int.Parse).ToList(); 

     var sBuilder = new StringBuilder(); 
     sBuilder.Append("Entered values: "); 

     foreach (int num in n) 
     { 
      sBuilder.Append(num + " "); 

     } 

     sBuilder.AppendLine(); 
     richTextBox1.Text += sBuilder.ToString(); 
    } 
関連する問題