본문 바로가기

ASP.net with C# (웹폼)

C# var변수 사용법, dynamic과의 차이점

C# var변수 사용법

먼저 var변수란 무엇인지 뜻 풀이부터 보고 사용법에 대해 설명하도록 하겠습니다.(MS Docs 보기)


var변수 - 암시적으로 형식화된 지역 변수 

 암시적  : 뭔가 단서가 있어 유추할 수 있음(반대말:명시적)

 형식화된  : 형식이 지정되는(컴파일러가 가장 적합한 형식을 결정해서 할당함을 의미)

 지역변수  : 전역변수로 사용할 수 없고, 메소드 내에서만 사용할 수 있음

  • var변수 사용예
var i = 3; // i 는 int형으로 컴파일 됨
var s = "Hello world"; // s string형으로 컴파일 됨
var a = new[] { 0, 1, 2, 3 }; //a는 int형 배열로 컴파일 됨
var exp = from c in customers
    where c.City == "Seoul"
    select c; // exp는 IEnumerable<Customer>형 또는 IQueryable<Customer> 등으로 컴파일 됨
var person = new { Name = "Baker", Age = 30 };// person 은 익명형식으로 컴파일됨
var list = new List<int>();// list 는 List<int>형으로 컴파일 됨
  • for 문에서 다음과 같이 사용됩니다.
for(var i = 1; i < 10; i++)
{
...
}
  • foreach 문에서 다음과 같이 사용됩니다.
foreach(var item in list)
{
...
}
  • using 문에서 다음과 같이 사용됩니다.
using (var file = new StreamReader("C:\\myfile.txt")) 
{ 
...
}

위의 예시는 단지 "var변수는 이런겁니다"라는 개념을 설명하기 위해 예로 든 것들입니다. 이건 "위와 같은 경우에 사용해야합니다" 와 다른 이야기입니다.

"C#은 일일이 변수의 형을 지정해 주지 않아도 되는 쓰기 쉬운 언어입니다."라고 말하고 있는게 아닙니다.

javascript, vbscript같은 스크립트 언어들은 변수를 정의할 때 형 지정을 하지 않아도 됩니다.

C# 

int i = 1;

visual basic

Dim i = 1

javascript

var i = 1;

변수의 형선언을 생략함으로써 일반사용자들이 쉽게 프로그래밍에 접근할 수 있도록 하였습니다. 이건 축복인 동시에 재앙이기도 해서 어디서 생긴 오류인지 파악하기 힘든 오류를 많이 만들어냅니다. 프로그래밍은 컴퓨터만 이해할 수 있으면 그만이 아닙니다. 사람이 이해하기 쉽도록 코딩하기 위해 노력해야 합니다. 단지 명시적 형선언이 귀찮아서 다음과 같이 코딩한다면 동료들로부터 비난받기 쉽습니다.

그럼 어떤 상황에서 var변수를 사용하는 것이 적절한 것일까요?

1. 형선언이 반복될 때 또는 형식이 긴 경우

Dictionary<string, string> device = new Dictionary<string, string>(); //이것보다
var  device = new Dictionary<string, string>(); //var를 사용하면 표현이 간결해 집니다.

2. 익명형식을 사용한 경우

var person = new { Name = "Baker", Age = 30 };

위에서의 예처럼 익명형식에서는 사용하지 않을수가 없습니다.


3. 쿼리표현식의 결과

var exp =
    from c in customers
    where c.City == "Seoul" 
    select c;  

var변수를 사용하면 표현도 코딩이 간결해지니 가독성이 좋아지고 var로 선언된 변수에 대해 인텔리센스 기능을 그대로 사용할 수 있기 때문에 작업효율이 향상됩니다.

var의 올바른 사용으로 생산성 높은 코드 많이 작성하시기 바랍니다.


dynamic과의 차이는 아래의 링크에서 확인하세요.

2019/02/07 - [분류 전체보기] - C# dynamic 사용 이유


프로젝트의 성공을 기원합니다.