2017-09-19 40 views
0

私はこのコードを使用しますが、動作しません。私はここで何が間違っていますか?テキストの更新後にラベルテキストが更新されない

private void button_input_Click(object sender, EventArgs e) 
{ 
    string input = textbox_input.Text; 
    string output = label_output.Text; 

    output = input.Replace("a", "4"); 
    output = input.Replace("s", "5"); 
    output = input.Replace("e", "3"); 
    output = input.Replace("v", @"\/"); 
    output = input.Replace("V", @"\/"); 
    output = input.Replace("m", "|V|"); 
    output = input.Replace("M", "|V|"); 

    input = output; 
} 

答えて

3

あなたは戻ってtextboxoutputを割り当てる必要があります。それは動作しません

label_output.Text = output; 

理由stringが参照型ですが、それは不変であるということです。つまり、代入演算子(=)を使用すると、値を含む新しいオブジェクトが作成されます。文字列に変更を適用するたびに、実際に新しい値を持つ新しいインスタンスが作成されます。

したがって、inputは、textbox_input.Textと同じ文字列への参照ではありません。そして、一方を変更しても他方には影響しません。同じことがoutputlabel_output.Textに適用されます。サイドノートとして


Replaceとして、あなたがより流暢な使用法を取得するために呼び出しをチェーンすることができ、文字列を返す: `input`が文字列ではなく、` textbox_inputへの参照ですので

label_output.Text - textbox_input.Text.Relace("","").Replace("","").....; 
+0

を。 Text'プロパティを使用します。 – Soviut

+0

@GiladGreen "残りを見て、私はあなたにアップアップします" :) –

+0

きれいな答えをありがとう、私はまだ新人ですが、これらのことが私を大いに助けます! –

関連する問題