프로그래밍/C#2018. 4. 11. 11:09

var

c#에는 var이라는 키워드가 있다.

(개념 https://msdn.microsoft.com/ko-kr/library/bb384061(v=vs.120).aspx)

명식적으로 타입을 선언 하는 것이 아닌

암시적으로 타입을 선언하는 것이다.

 

int k =30; (명시적으로 int라고 선언)

var k =30; (암시적으로 선언)

밑에 var을 사용한 경우에는 컴파일러가 오른쪽에 있는 식에서 변수 형식을 유추한다.

이렇게 var을 사용 하더라도 성능에는 전혀 영향이 없다고 한다.

(C#컴파일러는 컴파일 타임에 var변수의 실제 유형을 추론하고, 생성된 IL에는 차이가 없다고 함)

 

그렇다면 var은 어떤 경우에 쓰면 좋을까? msdn에는 이렇게 적혀 있다.

 

1.var 은 쿼리 변수의 생성된 형식을 정확하게 확인하기 어려운 쿼리 식에서 유용할 수도 있습니다. 그룹화 및 정렬 작업에서 이러한 경우가 발생할 수 있습니다

(Ex) IEnumerable<string> , IQueryable<string> 둘을 처리할 때의 성능이 다르다)

2.var 키워드는 특정 변수 형식이 키보드에서 형식화하기 번거롭거나 명백하거나 코드 가독성에 도움이 되지 않는 경우에도 유용할 수 있습니다. var이 이런 방식으로 유용한 한 가지 예제로 그룹 작업에 사용되는 형식과 같은 중첩 제네릭 형식이 있습니다. 다음 쿼리에서 쿼리 변수의 형식은IEnumerable<IGrouping<string, Student>>입니다. 사용자 및 코드를 유지 관리해야 하는 다른 사용자를 이를 이해하기만 하면 간편하게 암시적 형식화를 사용하는 데 아무 문제도 없습니다.



귀찮게 타입명을 직접 선언하지 않아도 된다는 편의성도 분명 있지만


남발하면 다른 사람이 코드를 이해하기에 별로 좋지 않을 것이라는 생각이 든다.


예를 들어 var data = MyClass.GetData() 이런 식으로 작성을 해 놓으면 만든 사람은 data변수가 정확이 어떤 타입


인지 알 수 있겠으나, 다른 개발자는 data라는 변수가 정확히 어떤 타입인지 한눈에 알지는 못할 것이고 확인을 해


야 할 것이다.


그래서 msdn 문서 맨 밑에도 필요한 경우에만 var을 사용하라고 나와있다.


var을 사용 했을때 모호함을 일으키는 경우라면 명시적으로 선언하는 것이 훨씬 낫다.


특히 내장 숫자 타입을 사용하는 경우 형변환 문제가 생길 수 있기 때문에 피하는 것이 좋다.

 

 

-참고 msdn,effective c#

 

 


'프로그래밍 > C#' 카테고리의 다른 글

코드 교정?  (0) 2018.08.29
스트림이란??  (0) 2018.07.31
캘린더  (0) 2018.03.28
C# Dictionary의 성능에 대해서.  (0) 2018.03.25
C# 자료구조 정리  (0) 2018.03.24
Posted by JinFluenza