작성
·
8
0
while (parent[y, x].Y != y || parent[y, x].X != x)
이 while 문에서 NullReferenceException 예외가 걸리는경우.
Initialize
함수를 확인해보시길 바랍니다.
public void Initialize(int PosY, int PosX, Board board)
{
PosY = PosY;
PosX = PosX;
_board = board;
BFS();
}
이부분을 이렇게 수정하시거나
public void Initialize(int posY, int posX, Board board)
{
PosY = posY;
PosX = posX;
_board = board;
BFS();
}
또는 this. 으로 수정해도 되네요.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 윤코코님.
NullReferenceException 관련 오류는 코드에서 객체나 변수가 초기화되지 않은 상태에서 접근할 때 발생하는 문제입니다. 질문하신 내용에서는 Initialize
메서드의 매개변수 이름과 인스턴스 변수의 이름이 같아서, Initialize
메소드 내부에서 전달받은 매개변수가 그대로 사용되지 않고 있음을 알 수 있습니다.
귀하의 사례에서 Initialize
메서드 내에서 값을 올바르게 할당하기 위해서는, 전달받은 매개변수 posY
와 posX
를 정확히 인스턴스 변수 PosY
, PosX
에 할당해야 합니다. 이를 위해 변수 할당 시 this
키워드를 사용하거나 매개변수 이름과 인스턴스 변수 이름을 다르게 설정해주는 것이 좋습니다. 수정된 코드를 예시로 보여드린 부분 처럼 변경하시면 문제가 해결됩니다.
관련해서 유사한 질문이 있었고 해결책이 제시된 다른 게시물을 참조하실 수 있습니다:
- BFS함수의 두 번째 while문 조건에 대하여
여기서 지식공유자께서 while
루프 내의 참조 상태 문제를 다루셨으며, !=
연산자에 대한 참조 비교 문제에 대해 자세히 설명해주셨습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.