2014-06-23 1 views
-1

누구나 올바른 방법을 보여줄 수 있습니까?개체 변수 또는 With 블록 변수가 설정되지 않았습니다. Visual Basic.net

Private Function F(ByVal x As Integer) As Integer 

    Static UnsignedAdd As Object 
    Static xb(3) As Byte 

    Call CopyMem(xb(0), x, 4) 

    If (m_RunningCompiled) Then 
     Return (CShort((m_sBox(0, xb(3)) + m_sBox(1, xb(2))) _ 
        Xor m_sBox(2, xb(1))) + m_sBox(3, xb(0))) 
    Else 
     Return UnsignedAdd(UnsignedAdd(m_sBox(0, xb(3)), 
        m_sBox(1, xb(2))) Xor m_sBox(2, xb(1)), m_sBox(3, xb(0))) 
    End If 

End Function 

UnsignedAdd(UnsignedAdd(m_sBox(0, xb(3)), 
     m_sBox(1, xb(2))) Xor m_sBox(2, xb(1)), m_sBox(3, xb(0))) 

의 반환을 설정하고 vb.net는 항상 나를 변수 또는 블록 변수가 설정되지 않은 객체를 표시하지 않습니다. 코드에 무슨 문제가 있습니까?

+1

그 중 하나가 발생하면 해당 변수 위에 마우스를 올려 놓으십시오. 그 중 하나가 Nothing 일 것이며 그 원인이됩니다. http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it을 참조하십시오. – Plutonix

답변

0

UnsignedAdd은 로컬 변수이지만 값을 할당하지 않으므로 아무 것도 값을 할당하지 않습니다.

너무 오싹한 코드입니다. 확실히 UnsignedAdd 유형이 무엇인지 알기 때문에 그 유형으로 선언 할 수 있어야합니다. 나는 Static 변수에 대한 정당성을 실제로 볼 수 없습니다.