2012-09-25 3 views
4

가능한 중복 : 항상가능한 경우 암시 적 유형 (var)을 사용해야하는 이유는 무엇입니까?

http://msdn.microsoft.com/en-us/library/ff926074.aspx

내가 :
Advantage of var keyword in C# 3.0

어제는 내가 VAR, 지금까지 수를 사용해야, MS에서 권고가 우연히 발견 올바른 Type을 사용하면 코드를 문서화하는 데 도움이되고 findig b도 도움이된다고 생각했습니다. 컴파일 시간에 ugs.

이 권장 이유는 무엇입니까?

최저 토마스

답변

1

암시 적 타이핑을 사용한다고해서 변수가 강하게 입력되지는 않습니다. 이는 컴파일러가 명령문의 오른쪽에있는 유형을 의미 함을 의미합니다.

var i = 1; 

iint 인 유형을 갖는 것으로 정의한다. int i = 1;과 완전히 똑같지 만 형식이 내포되어 있습니다. 사용자가 입력했던 것보다

var pairs = new List<pair<int, IEnumerable<string>>>(); 

을 :

마찬가지로, 다음 코드를 읽고 많은 쉽게

List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>(); 

아직 결과가 정확히 동일합니다.

+0

감사합니다. 즉, 타입이 comile 시간에 해결 되었기 때문에, 변수의 누락 (예 : 다른 유형의 함수로 전달)이 컴파일러에 의해 감지됩니다. – Thomas

+0

정말 맞습니다. 컴파일러는 어떤 유형인지 알고 있으며 어떤 유형인지 알고 있습니다. '암시 적'유형을 사용하는 것은 간단히 간단합니다. –

7

그럼 추천이 있습니다

Coding Convention - Implicitly Typed Local Variables

지역 변수에 대한

를 사용하여 암시 적 입력 변수 의 유형이 오른쪽 측면에서 분명입니다 할당 또는 정확한 유형이 이 아닌 경우입니다.

항상 그렇지는 않습니다.

또한이있다 : 유형 할당의 오른쪽 측면에서 분명하지 않을 때

는 VAR를 사용하지 마십시오. 동일한 소스에서

예 :

// When the type of a variable is not clear from the context, use an 
// explicit type. 
int var4 = ExampleClass.ResultSoFar(); 
4

그것은 키 입력을 인하 문법 설탕입니다.

컴파일러는 RHS에서 표현식을 평가하여 LHS에서 변수 유형을 추출합니다.

그래서 코드를 아래와 같이 : 너무 종류의 우리의 입력의 일부를하고있다

Filestream fstream = new FileStream("file", Filemode.Open); 

컴파일러 :

var fStream = new FileStream("file", Filemode.Open); 

은 컴파일러에 의해 transalted된다.

0

컴파일러가 모든 작업을 수행하기 때문에 var을 사용하면 성능이 저하되지 않습니다. 짧아서 MyDatabaseModel model을 입력하십시오.

var를 사용하는 또 다른 이유는 오른쪽에서 어떤 종류의 유형인지를 볼 수 있다는 것입니다.

익명 형식을 사용하는 마지막 이유는 형식을 알지 못할 때뿐입니다.

엄지 손가락의
2

내 규칙 : 코드가를 포괄적으로 의미하는 경우

당신은 var를 사용한다; 미래에 유형이 바뀌면 아마 제대로 작동 할 것입니다.

관련 문제