2017-05-28 8 views
0

Fehler CS0236 Ein Feldinitialisierer kann nicht das Nicht-statisches Feld verweisen, Methode oder EigenschaftFehler in meinem Decryptor/Encryptor Fehler CS0236

Und ich habe versucht, es zu beheben, aber ich kann einfach‘ t es ist für einen Verschlüsselungs-/Entschlüsselungs-Programm, das ich

string hash = (materialSingleLineTextField4.Text); 

private void materialRaisedButton1_Click(object sender, EventArgs e) 
{ 
    //Encrypt Function 
    byte[] data = UTF8Encoding.UTF8.GetBytes(materialSingleLineTextField1.Text); 
    using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) 
    { 
     byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash)); 
     using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }) 
     { 
      ICryptoTransform transform = tripDes.CreateEncryptor(); 
      byte[] results = transform.TransformFinalBlock(data, 0, data.Length); 
      materialSingleLineTextField2.Text = Convert.ToBase64String(results, 0, results.Length); 
     } 
    } 
} 

Mein Fehler machen hier string hash = (materialSingleLineTextField4.Text); 1. Zeile und unterstreicht materialSingleLineTestField4 in rot Kann jemand mir bitte helfen? Ich habe Schwierigkeiten dank c;

Antwort

1

Sie versuchen, diesen Wert außerhalb des Kontextes von einem Verfahren oder eine Veranstaltung zu setzen, in der Klasse Initialisierungsebene:

string hash = (materialSingleLineTextField4.Text); 

Aber wenn die Klasse zuerst dies keinen Sinn machen würde, wird initialisiert. Es würde keinen Wert in materialSingleLineTextField4.Text geben, es gibt nicht einmal garantiert eine gültige Instanz von materialSingleLineTextField4.

Wenn dieser Wert in der materialRaisedButton1_Click-Methode festgelegt und verwendet werden soll, dann fügen Sie diese Codezeile in diese Methode ein. Bei Bedarf kann die Variable immer noch in einem Klassenbereich sein. Zumindest muss das Setzen auf den Wert materialSingleLineTextField4.Text in einer Methode oder einem Konstruktor erfolgen.

+1

oder ein Konstruktor :) – niceman

+1

@niceman: Guter Punkt, ich habe die Antwort aktualisiert. Ich denke immer an die beiden als kontextuell ähnlich genug, aber es ist sicherlich eine wichtige Unterscheidung. – David

+0

Danke c; Das war sehr hilfreich für mich – SniperX