2017-06-15 2 views
-1

Ich habe unter Code, aber ich verstehe nicht, warum, wenn ich das Kontrollkästchen aktiviert, ändert sich die Zugriffsstring nicht zu "Y".C# Checkbox ungültigen Wert zurück

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

Entfernen Sie den Parameter, den Sie übergeben, oder deklarieren Sie einen 'ref string access' (' checkvalue (checkBox1, ref access1) '). – dcg

+0

Aktualisiere 'access1' direkt, anstatt es als Parameter zu übergeben. – juharr

+0

Wenn Sie wissen wollen, ob Sie Y oder N brauchen, brauchen Sie keine Variable, fragen Sie einfach nach 'chkbox.Checked'. – dcg

Antwort

1

Die access Parameter Ihrer checkvalue Methode wird als Referenz übergibt nicht zu werden (mit dem ref Stichwort.) Also, Sie access lokal auf „N“ setzen und sofort darüber, sobald Ihre checkvalue Methode zurückgibt vergessen . Die access1 Variable ist nicht betroffen. Ihre Methode muss access per Referenz unter Verwendung des Schlüsselwortes ref akzeptieren.

+0

der unveränderliche Kommentar ist nicht hilfreich, da es in diesem Zusammenhang irrelevant ist, er eine Zeichenfolge neu zuweisen (oder zu versuchen) den Wert einer Zeichenfolge nicht ändern – pm100

+0

@ pm100 das OP ist unter dem Eindruck, dass er einen Wert der Zeichenfolge die zugewiesen wird So würde er einem "int" einen Wert zuweisen. Aber auf jeden Fall hast du technisch recht, also habe ich das behoben. –