2017-06-15 61 views
-1

我有下面的代碼,但我不明白爲什麼當我檢查複選框時,訪問字符串不會更改爲「Y」。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

checkvalue方法的access參數沒有被引用傳遞(使用ref關鍵字)。所以,要設置access本地爲「N」和它只要你checkvalue方法立即返回遺忘。 access1變量不受影響。您的方法需要通過參考ref關鍵字接受access

+0

不可改變的評論是沒有用的,因爲它在這種情況下無關緊要,他正在重新分配一個字符串(或試圖)不改變字符串的值 – pm100

+0

@ pm100 OP的印象是他正在給字符串賦值他會爲int分配一個值。但無論如何,技術上你是對的,所以我解決了這個問題。 –