문제

2016-07-07 2 views
0

나는 다음과 같은 방법이 있습니다문제

void setTexts() 
{ 
    if (queueIn != null) 
    { 
     queueIn.text = countIn.ToString(); 
    } 

    if (queueOut != null) 
    { 
     queueOut.text = waitingForPickup.ToString(); 
    } 
} 

내가 queueIn가 null의 경우는 아무것도하지 않고 싶지만 queueIn가 null의 말 null 참조 예외를 점점 계속합니다. queueIn이 null 일 때 왜 블록으로 들어가는가?

EDIT : Debug.Log 검사를 추가하면 문제가 사라지고 이전 12 번이나 다른 것을 저장하지 못했을 수 있습니다. 귀하의 제안에 감사드립니다! 저는 C#을 처음 접했습니다.

+2

내 생각에 'NullReferenceException'은 'countIn'에서 온 것 같습니다. 너는 그것을 확인하지 않고있다. –

+0

3 번 라인에서 오류가 발생 했습니까? waitingForPickup은 queueIn을 호출합니까? queueIn이 null 참조라는 것이 확실합니까? – Dispersia

+3

여기서는 중단 점을 배우고 스테핑하는 것이 귀중한 기술이됩니다. 문제를 올바르게 해결하는 방법을 배우고 이러한 바보 같은 문제가 아닌 문제가됩니다. – Thebluefish

답변

1

모든 객체 기준점을 확인해야합니다. 이 경우 countIn이 (가) 귀하의 범법자가 될 수 있습니다.

예외를 제거하는 방법은 다음과 같습니다.

void setTexts(){ 
    if (queueIn != null && countIn != null) { 
     queueIn.text = countIn.ToString(); 
    } 
    if (queueOut != null && waitingForPickup != null){ 
     queueOut.text = waitingForPickup.ToString(); 
    } 
} 
+0

countIn 및 waitingForPickup이 기본 유형 (문자열/char 이외) 인 경우 어떻게됩니까? 그는 queueIn이 countIn이나 waitingForPickup이 아니라 null이라는 것을 나타냅니다. 이것은 답이 아닙니다. – Dispersia

+0

@Dispersia 나는 동의하지 않는다. NullReferenceException이 자신의 코드에서 발생할 수있는 유일한 방법은 countId가 참조 유형 인 경우입니다. 따라서 신뢰할 수있는 가정이라고 생각합니다. 나는 또한 op가 잘못되었다고 말하면서 queueIn이 null이라는 것을 믿는다. 왜냐하면 만일 그것이 사실이라면 basic If 조건이 실패하지 않기 때문에 NullReferenceException이 없기 때문이다. 질문 자체는 초보 프로그래머를 나타내므로, 나는 그가 자신의 가정에서 틀릴 수도 있다고 생각한다. –

+0

countIn은 setTexts를 호출하는 함수의 값을 설정하는 int입니다. Monodevelop가 queueIn 인 사실을 알려주었습니다. 그것은 null입니다. –

0

당신은 countInwaitingForPickupToString()를 호출 - 당신은 그들도 확인해야합니다. 예 :

void setTexts(){ 
    if (queueIn != null && countIn != null) { 
     queueIn.text = countIn.ToString(); 
    } 
    if (queueOut != null && waitingForPickup != null) { 
     queueOut.text = waitingForPickup.ToString(); 
    } 
}