본문 바로가기

C#

C# var와 타입 추론

1. 개념 설명

var는 지역 변수에서 컴파일러가 우변을 보고 타입을 추론하는 키워드입니다. 정적 타입 언어 특성상 런타임에 타입이 바뀌지 않으며 dynamic과 다릅니다. 우변이 타입을 명확히 드러낼 때 가독성이 좋아지며, 그 외에는 명시적 타입을 권장합니다.

2. 코드 예제

아래 예제는 숫자, 문자열, 컬렉션, 익명 형식과 LINQ에서의 타입 추론을 보여줍니다.

using System;
using System.Collections.Generic;
using System.Linq;

int explicitInt = 10;
var number = 42;                    // int
var text = "hello";                 // string
var list = new List<int> { 1, 2, 3 };
var doubled = list.Select(n => n * 2).ToList(); // List<int>
var anon = new { Name = "Dotnet", Version = 8 }; // 익명 형식
var price = 1.0m;                   // decimal

var inferredInt = explicitInt + number;

Console.WriteLine(number.GetType().Name);     // Int32
Console.WriteLine(text.ToUpper());            // HELLO
Console.WriteLine(string.Join(",", doubled)); // 2,4,6
Console.WriteLine($"{anon.Name}-{anon.Version}"); // Dotnet-8
Console.WriteLine(inferredInt.GetType().Name); // Int32
Console.WriteLine(price.GetType().Name);       // Decimal

Console.WriteLine은 추론 결과를 확인합니다. 예를 들어 number는 int이며, 금액처럼 소수를 정확히 다룰 때는 1.0m으로 decimal을 유도합니다.

3. 주의사항/팁

var는 지역 변수 전용이며 필드나 매개변수에는 사용할 수 없습니다. var x = null;은 불가하니 string? s = null;처럼 목표 타입을 명시하세요. 빈 컬렉션은 우변에서 타입을 제공해야 하며, 숫자 리터럴은 기본적으로 int/double이므로 소수 금액에는 m 접미사를 사용하세요. LINQ 투영의 익명 형식은 var가 필수입니다.

'C#' 카테고리의 다른 글

C# StringBuilder로 문자열 성능 최적화  (0) 2026.04.10
C# Enum 활용법  (0) 2026.04.10
C# 람다 식 (Lambda Expression)  (1) 2026.04.09
C# using 문과 IDisposable  (0) 2026.04.08
C# 튜플 (Tuple)과 분해  (0) 2026.04.08