【问题标题】:Object reference not set to an instance of an object at execution对象引用在执行时未设置为对象的实例
【发布时间】:2019-04-14 16:05:35
【问题描述】:
Function MD5Hash(ByVal values As String) As Byte()
    Return MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(values))
End Function

Function Encrypt(ByVal Stringinput As String, ByVal key As String) As String
    des.Key = MD5Hash(key)
    des.Mode = CipherMode.ECB
    Dim buffer As Byte() = ASCIIEncoding.ASCII.GetBytes(Stringinput)
    Return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length))
End Function


Private Sub btnSignup_Click(sender As Object, e As EventArgs) Handles btnSignup.Click
    Using con As New SQLiteConnection(ConnectionString.ToString)

    Dim query As String = "INSERT INTO LoginTB (user, password) VALUES (@username,@password)"
    con.Open()
        Using cmd As New SQLiteCommand(query, con)

            cmd.Parameters.AddWithValue("@username", TxtBxUsername.Text)
            cmd.Parameters.AddWithValue("@password", Encrypt(TxtBxPassword.Text, "abc"))
            cmd.ExecuteNonQuery()
            MsgBox("user created successfully")
            con.Close()
        End Using
    End Using
End Sub

当我点击注册按钮时,错误出现在 MD5Hash 的值中。

System.NullReferenceException '对象引用未设置为对象的实例。'

我知道它被问了很多。但我找不到这个问题的解决方案。

【问题讨论】:

  • EncryptMD5Hash声明为Shared方法,即Shared Function MD5Hash(ByVal values As String) As Byte()
  • 在产生错误的代码行上设置断点并检查变量以查看哪个是Nothing。初始化这个变量。
  • 当我将其声明为共享时,它会显示Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.

标签: vb.net


【解决方案1】:

该问题可能是由于没有为 MD5 创建实例。您可以尝试如下更改函数MD5Hash 的代码吗?

Function MD5Hash(ByVal values As String) As Byte()
    Static hash As MD5 = MD5.Create()
    Return hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(values))
End Function

【讨论】:

  • 局部变量不能与包含它的函数同名。得到这个错误
  • 在函数内部,将 md5Hash 更改为其他名称,例如 hash在两个地方,保持函数名称相同.我还将Dim 更改为Static,这样该函数每次都会重用相同的实例。
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多