올해 여름에, var 사용에 대한 궁금증이 많았다. 그러던 중 책을 읽고 고민을 해결했던 기억이 있다.
출처 : C# 코딩의 기술: 기본편, 1.1 var 사용에 대한 고민
암시적 형식 지역 변수 - C# 프로그래밍 가이드 - C#
C#의 var 키워드는 초기화 문의 오른쪽에 있는 식에서 변수의 형식을 유추하도록 컴파일러에 지시합니다.
learn.microsoft.com
* var : 암시적 형식 지역 변수
오해 : var는 형을 명시하지 않는다 (어떤 것이든 저장할 수 있어서, 큰코다칠 수 있다)
cf. 이런 오해에 해당하는 자료형 : dynamic (실행 시에 동적으로 해석되는 형, vs 인텔리센스 기능 동작x)
사실 : 형이 명시돼 있지 않아도 하나의 형으로 정해진다
형 추론과 관련된 일반적인 문제
(1) 형을 명시하지 않는다 -> 변수 = 어떤 것이든 저장할 수 있는 마술 상자 (C언어)
(2) 형을 명시한다 -> 변수 = 지정한 형만 저장 가능 (JavaScript)
둘 중 어느 것도 해당하지 않는 언어 : C#, TypeScript (형 추론 기능 보유 -> 형을 명시하지 않아도 알아서 변수에 형이 붙음)
(3) 형을 명시하지는 않지만, 추론으로 확정한다 -> 변수에는 지정된 형만 저장 가능 (C#)
C# var 사용 예시
var a = "Hello!"
는 string a = "Hello!"와 같다.
초기화하는 값이 문자열이기 때문에, 변수의 형도 string형이라고 추론하기 때문
불가능한 var 사용법
var a;
추론을 할 수 없기 때문에(아무런 힌트가 x) 형이 정해지지 않음
형 추론 기능(var)을 사용하면 좋은 때 (긴 코드!)
List<string> list = new List<string>();
var list = new List<string>(); // 코드를 간결하게 작성 가능
Dictionary<string, Action<TextWriter>> dic = new Dictionary<string, Action<TextWriter>>();
var dic = new Dictionary<string, Action<TextWriter>>();
'공부 > C#' 카테고리의 다른 글
[C#/LINQ]First vs. FirstOrDefault (0) | 2023.12.10 |
---|---|
[C#]if문 vs switch문 (1) | 2023.12.05 |
[C#]readonly vs. const (1) | 2023.11.27 |
[C#]static(정적) 필드, 메소드 (0) | 2023.11.12 |
[C#]헷갈리는 용어 정리 (클래스, 객체(인스턴스) ...) (0) | 2023.11.12 |