2010-02-01 7 views

답변

3

에서 이에 대한 직접 해당하는, 당신은 int 멀리 얻을 수있다, 그렇다면 그들은 그 점에서 비슷합니다.

그러나 var은 가독성을 위해 일부 명확한 설명을 제거하는 것과 관련하여 size_t이 코드를 더 명백하게하는 것과 다릅니다.

그래서 다음 코드의 가독성은 var 개선 할 수 있습니다

Dictionary<string, Dictionary<int, char>> mapping = new Dictionary<string, Dictionary<int, char>>(); 

- 대 -

var mapping = new Dictionary<string, Dictionary<int, char>>(); 

그러나, var의 과도한 사용은 var f = Foo();처럼, 가독성을 해칠 수 있습니다.

size_t과 달리 명시 적 유형이 아닌 var으로 컴파일되는 코드에는 차이가 없습니다.

size_t을 사용하면 이점 중 하나가 이식성입니다. 객체 크기는 모든 플랫폼에서 int이 아니지만 size_t은 항상이를 수용 할 수있을만큼 커야합니다. 즉, size_t을 사용하지 않으면 코드가 일부 플랫폼에서 올바르게 컴파일되지 않을 수 있습니다.

그러나 var으로 끝나는 부분에서 컴파일되는 코드는 완전히 동일합니다. 가능한 한 모든 곳에서 var을 사용할 수도 있고 var을 사용할 수도 있습니다 (예외 : anonymous types 제외). 아무런 차이가 없습니다.

그것은 당신에게 C에, var는 판단 호출 더 가능 항상 사용 size_t을 권장합니다 그래서 동안. 그것은 당신이 코드를 더 읽기 쉽게 만드는 것이라고 생각합니다.

6

둘 사이에 큰 차이가 있습니다.

size_t은 sizeof로 반환하는 개체의 크기를 나타내는 데 사용됩니다. 변수를 선언하는 일반적인 방법은 아닙니다.

var은 변수를 암시 적으로 선언하는 방법입니다.

15

그들은 서로 관련이 없습니다!

var이 자동 유형 유추에 사용됩니다. 컴파일러는 이니셜 라이저의 반환 유형 (C++ 1x에서 과 같은)을 기반으로 변수 유형을 계산합니다.

size_t 그것은 아니다 C.

0

단지 부호없는 정수 타입이다. 나는 C++의 size_t에 대해서 모른다. 그러나 C#의 var는 변수를 명시 적으로 선언하는 것과 정확히 동일하므로 런타임과 아무 관계가 없다.

0

아니요, varsize_t은 동일하지 않습니다.

그들은 비슷한 기능을 수행합니다. 둘 다 명령문의 일부로 로컬 변수의 유형을 선언합니다. 그러나 그것이 유사성이 끝나는 곳입니다. 두 varsize_t 선언하고 특정 유형이

변수 : size_tunsigned int로서 일반적 typedef 에드 타입 size_t을 갖는다. var은 형식이 나머지 문에서 컴파일러에 의해 유추되어야한다고 선언합니다. int 일 수 있으며 string 일 수 있으며 List<MyClass> 일 수 있습니다 ... 컴파일러는 나머지 문구를 분석하여 수치를 나타냅니다.

2

C# var 키워드는 type inference과 관련이있는 C++ 0x 'auto'키워드와 가장 유사하며 객체의 크기를 지정하는 플랫폼 독립적 인 방법이 아닌 저장소 유형이 표현식에서 추론됩니다.

당신이 var의 사용은 당신이 실제로 size_t를 사용할 필요가 없다는 점에서 size_t 같다 여부를 묻는 경우 C.