가능한 중복 : 항상가능한 경우 암시 적 유형 (var)을 사용해야하는 이유는 무엇입니까?
어제는 내가 VAR, 지금까지 수를 사용해야, MS에서 권고가 우연히 발견 올바른 Type을 사용하면 코드를 문서화하는 데 도움이되고 findig b도 도움이된다고 생각했습니다. 컴파일 시간에 ugs.
이 권장 이유는 무엇입니까?
최저 토마스
가능한 중복 : 항상가능한 경우 암시 적 유형 (var)을 사용해야하는 이유는 무엇입니까?
어제는 내가 VAR, 지금까지 수를 사용해야, MS에서 권고가 우연히 발견 올바른 Type을 사용하면 코드를 문서화하는 데 도움이되고 findig b도 도움이된다고 생각했습니다. 컴파일 시간에 ugs.
이 권장 이유는 무엇입니까?
최저 토마스
암시 적 타이핑을 사용한다고해서 변수가 강하게 입력되지는 않습니다. 이는 컴파일러가 명령문의 오른쪽에있는 유형을 의미 함을 의미합니다.
var i = 1;
i
int
인 유형을 갖는 것으로 정의한다. int i = 1;
과 완전히 똑같지 만 형식이 내포되어 있습니다. 사용자가 입력했던 것보다
var pairs = new List<pair<int, IEnumerable<string>>>();
을 :
마찬가지로, 다음 코드를 읽고 많은 쉽게
List<pair<int, IEnumerable<string>>> pairs = new List<pair<int, IEnumerable<string>>>();
및
아직 결과가 정확히 동일합니다.그럼 추천이 있습니다
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();
그것은 키 입력을 인하 문법 설탕입니다.
컴파일러는 RHS에서 표현식을 평가하여 LHS에서 변수 유형을 추출합니다.
그래서 코드를 아래와 같이 : 너무 종류의 우리의 입력의 일부를하고있다
Filestream fstream = new FileStream("file", Filemode.Open);
컴파일러 :
var fStream = new FileStream("file", Filemode.Open);
은 컴파일러에 의해 transalted된다.
컴파일러가 모든 작업을 수행하기 때문에 var을 사용하면 성능이 저하되지 않습니다. 짧아서 MyDatabaseModel model
을 입력하십시오.
var를 사용하는 또 다른 이유는 오른쪽에서 어떤 종류의 유형인지를 볼 수 있다는 것입니다.
익명 형식을 사용하는 마지막 이유는 형식을 알지 못할 때뿐입니다.
엄지 손가락의내 규칙 : 코드가를 포괄적으로 의미하는 경우
가당신은 var
를 사용한다; 미래에 유형이 바뀌면 아마 제대로 작동 할 것입니다.
감사합니다. 즉, 타입이 comile 시간에 해결 되었기 때문에, 변수의 누락 (예 : 다른 유형의 함수로 전달)이 컴파일러에 의해 감지됩니다. – Thomas
정말 맞습니다. 컴파일러는 어떤 유형인지 알고 있으며 어떤 유형인지 알고 있습니다. '암시 적'유형을 사용하는 것은 간단히 간단합니다. –