2017-06-15 6 views
-1

私は以下のコードを持っていますが、チェックボックスをオンにするとアクセス文字列が "Y"に変わらない理由を理解できません。あなたのcheckvalue方法のC#のチェックボックスが無効な値を返す

string access1 = "N";` 

void checkvalue(CheckBox chkbox, string access) 
{ 
    if (chkbox.Checked) 
    { 
     access = "Y"; 
    } 
    else 
    { 
     access = "N"; 
    } 
} 

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    checkvalue(checkBox1, access1); 
} 
+0

渡すパラメータを削除するか、 'ref string access'(' checkvalue(checkBox1、ref access1) ')を宣言してください。 – dcg

+0

'access1'をパラメータとして渡すのではなく、直接更新してください。 – juharr

+0

あなたが望むものがYかNを使用するかどうかを知ることは変数を必要としないので、単に 'chkbox.Checked'を求めてください。 – dcg

答えて

1

accessパラメータは(refキーワードを使用して。)参照渡しされていないので、あなたは「N」にローカルaccessを設定し、すぐに、すぐにあなたのcheckvalueメソッドが返すなど、それについて忘れています。 access1変数は影響を受けません。お使いの方法は、refキーワードを使用して参照することによりaccessを受け入れる必要があります。

+0

この文脈では無関係なので、不変コメントは役に立ちません。文字列の値を変更しないで文字列を再割り当てしようとしています。 – pm100

+0

@ pm100 OPは文字列に値を割り当てている印象です。彼はintに値を代入します。しかし、いずれにせよ、技術的にはあなたが正しいので、私はそれを修正しました。 –

関連する問題