VSCODE를 비롯한 여러 IDE에서 C# 코딩을 하다 보면 이러한 오류가 뜰 수 있다.
사실 오류보다는 경고에 가까운데, 경고가 있는걸 보기 싫어하는 개발자에게 도움이 될까 하여 올린다.
1. 에러의 내용
사실 별 내용 없지만 그래도 글의 구조를 지키기 위해서 제목을 나눠두겠다.
이 에러를 해석해 보면 "int.Parse(string s) 메서드의 매개변수 's'에 null 참조가 전달될 수 있습니다."
정도로 해석해 줄 수 있다. int.Parse의 매개변수에 null값이 들어갈 수 있다는 이야기이다.
다르게 말하면 null값이 들어가면 안 되기에 조심하라는 말이다. 만약 들어가면 오류가 되기에
저렇게 null이 들어갈 수 있다고 경고하는 것이다. 당연히 예외처리를 해서
null값을 없애면 오류가 해결된다.
namespace unicoti {
class Program {
static void Main(string[] args) {
int num1 = int.Parse(Console.ReadLine());
}
}
}
(기존 코드)
2. 해결 방법
나도 실무적인 게임 개발을 주로 하고 코딩 테스트는 안 해봐서
int.TryParse를 많이 사용하는 걸 보고 꼭 저렇게 해야 하나 싶어 항상 하던 대로 했는데,
여기서 그 의문이 풀렸다. 이런 경우 int.Parse 가 아니라 int.TryParse를 사용하면 된다.
하지만 이게 int.Prase가 아니라 다른 메서드에서 발생한다면 예외처리를 스스로 해야 한다.
앞에 if문을 달아서 조건을 확인하는 등의 조치가 이루어지면 오류가 해결될 것이다.
결론적으로, null이 매개변수로 들어갈 가능성을 없애면 된다.
using System;
namespace unicoti {
class Program {
static void Main(string[] args) {
int num1, num2;
int.TryParse(Console.ReadLine(), out num1);
int.TryParse(Console.ReadLine(), out num2);
}
}
}
(바뀐 코드)
https://alpaca-code.tistory.com/237
위 글을 사용하면 더 잘 대처할 수 있을 것이다. 한번 꼭 보길 추천한다.
여기까지 Possible null reference argument for parameter 's' in 'int int.Parse(string s)' 오류에 대해서
원인과 해결법을 알아보았다. null은 항상 문제인 것 같다. 수학에서도 새로운 개념을 만들면
항상 0에서 문제가 생기듯이 코딩도 null을 조심해 주는 습관을 가져야 할 듯하다.
순수 C#에 대한 오류 해결은 처음 올려본다. 더 나은 내가 되고 있는 것 같다.
이상으로 도움이 되었길 바라며,
끝.
'게임 개발 > C#' 카테고리의 다른 글
이스케이프(escape) - 특수문자를 문자열로 바꾸는 법, 출력하는 법. (0) | 2024.08.01 |
---|---|
C#에서 ?와 ??의 의미, null을 판단하는 방법(null 조건부 연산자, null 병합 연산자) (2) | 2024.07.30 |
dynamic programming(dp)와 메모이제이션(memoization) - C# (0) | 2024.07.10 |
유니티 C# override, virtual (0) | 2022.11.21 |
C# override (0) | 2022.08.19 |
댓글