2017-05-28 38 views
0

错误CS0236一个字段初始不能引用非静态字段,方法或属性错误在我的解密/加密器错误CS0236

而且我一直在试图修复它,但我就是”牛逼 这是我正在做

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); 
     } 
    } 
} 

我的错误的加密/解密程序在这里string hash = (materialSingleLineTextField4.Text);第1行,并以红色 强调materialSingleLineTestField4有人可以帮我吗?我有difficulites谢谢c;

回答

1

你试图设置这个值的任何方法或事件的背景之外,在类初始化级别:

string hash = (materialSingleLineTextField4.Text); 

但当类将首先被​​初始化,这将没有任何意义。在materialSingleLineTextField4.Text中没有价值,甚至没有保证是materialSingleLineTextField4的任何有效实例。

如果要在materialRaisedButton1_Click方法中设置和使用该值,则将该行代码放在该方法中。如果需要,变量仍然可以处于类级范围内。但至少将其设置为materialSingleLineTextField4.Text的值必须在方法或构造函数中发生。

+1

或构造函数:) – niceman

+1

@niceman:好点,我已经更新了答案。我一直认为这两者足够相似,但它确实是一个重要的区别。 – David

+0

谢谢c;这对我来说真的很有帮助 – SniperX