공부/C#

[C#]var 사용법

개발의 피 2023. 11. 29. 21:24

올해 여름에, var 사용에 대한 궁금증이 많았다. 그러던 중 책을 읽고 고민을 해결했던 기억이 있다. 

출처 : C# 코딩의 기술: 기본편, 1.1 var 사용에 대한 고민 

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/implicitly-typed-local-variables

 

암시적 형식 지역 변수 - 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