Learning
When: 1학년 7월 27일
How:
방학 여름 캠프에서 선생님이 var 키워드를 사용하여 변수를 선언하셨는데 그게 어떻게 동작하는지는 어느 정도 알고 있지만 너무 얕게 알고 있다고 생각하여 더욱 깊게 공부하게 되었습니다.
Understanding:
- 정의 : var 키워드는 변수의 타입을 컴파일러가 알아서 정해주는 키워드입니다. 사실 int a = 10; 이라는 코드에서, a = 10; 이라는 코드만 봐도 보통의 프로그래머는 int로 설정할 것이고, 크기가 급격하게 커지는 예외 상황에서는 long을 사용할 것입니다. 그리고 string a = "hi"; 라는 코드도 타입을 쓰지 않아도 변수의 타입이 string이라는 것을 추론할 수 있습니다. 이 "추론"이라는 것을 이용하여 컴파일러가 타입을 정해주는 것인데,
전 처음에 만능 타입인 줄 알고 여러가지 타입의 값을 넣어도 되는 줄 알았지만한번 정해지면 당연히 바꿀 수 없습니다. - 사용법 : var 키워드는 간단하게 타입이 있을 위치에 var를 넣어주면 string, int, List, bool, 배열 등 다양한 타입을 컴파일러가 자동으로 설정해 주고, 그대로 사용할 수 있습니다. 아래와 같이 리스트는 물론 람다식도 Func 또는 Action으로 타입을 유추할 수 있습니다.
var i = 10; // int
var s = "Hello"; // string
var b = true; // bool
var l = new List<int>(); // List<int>
var a = (int x) => x; // Func
var d = new Dictionary<string, int>(); // Dictionary<string, int>
- 주의점 : var a = GetValue(10); 이런 코드에서 컴파일러는 반환 형식을 보고 타입을 유추할 수 있습니다. 하지만 그렇다는 것은 사람도 반환 형식까지 봐야 타입을 알 수 있다는 것 입니다. 유추하기 정말 쉽거나, Dictionary<string, List<int>> 이런 복잡하고 긴 코드일 경우에는 사용하면 오히려 가독성이 좋아질지도 모르지만 잘못된 상황에서 사용한다면 코드를 읽는 사람이 타입을 유추해야 한다는 것 때문에 오히려 가독성이 나빠질 수 있습니다.
Result: var 키워드는 컴파일러가 타입을 유추해주는 상당히 유용한 키워드이지만, 유추하는 것은 그 코드를 읽는 사람도 마찬가지입니다. 아무리 유추하기 쉬워도 직접 타입을 명시해 주는 것만큼 보기 쉬운 것이 없듯, 유추하는 것이 더욱 효율적인 타입이 아닐 경우에는 타입을 명시해 주는 것이 더욱 깔끔한 코드를 짜는 것에 도움을 줄 것 같습니다.
'C#' 카테고리의 다른 글
| [C#] Queue 자료형, 자료 구조 (1) | 2025.07.29 |
|---|---|
| [C#] 구조체 (struct) (7) | 2025.07.28 |
| [C#] 흐름 제어 키워드 (0) | 2025.07.26 |
| [C#] 트리(tree) 자료 구조 (3) | 2025.07.25 |
| [C#] string 메서드 (0) | 2025.07.24 |