我的解密器/加密器错误CS0236中出错

时间:2017-05-28 19:10:14

标签: c#

  

错误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 有人可以帮帮我吗?我有困难感谢c;

1 个答案:

答案 0 :(得分:1)

您正尝试在类初始化级别的任何方法或事件的上下文之外设置此值:

string hash = (materialSingleLineTextField4.Text);

但是当这个类首次被初始化时,这没有任何意义。 materialSingleLineTextField4.Text中没有值,甚至不保证materialSingleLineTextField4的任何有效实例。

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