교수님의 주장으로 인해 C++ 코드에서 size_t를 사용하는 데 익숙해졌습니다. C#의 'var'가 같은 종류인지는 궁금합니다.C에서 "var"는 C에서 "size_t"와 유사합니까?
답변
에서 이에 대한 직접 해당하는, 당신은 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
을 권장합니다 그래서 동안. 그것은 당신이 코드를 더 읽기 쉽게 만드는 것이라고 생각합니다.
둘 사이에 큰 차이가 있습니다.
size_t은 sizeof로 반환하는 개체의 크기를 나타내는 데 사용됩니다. 변수를 선언하는 일반적인 방법은 아닙니다.
var은 변수를 암시 적으로 선언하는 방법입니다.
그들은 서로 관련이 없습니다!
var
이 자동 유형 유추에 사용됩니다. 컴파일러는 이니셜 라이저의 반환 유형 (C++ 1x에서 과 같은)을 기반으로 변수 유형을 계산합니다.
size_t
그것은 아니다 C.
단지 부호없는 정수 타입이다. 나는 C++의 size_t에 대해서 모른다. 그러나 C#의 var는 변수를 명시 적으로 선언하는 것과 정확히 동일하므로 런타임과 아무 관계가 없다.
아니요, var
및 size_t
은 동일하지 않습니다.
그들은 비슷한 기능을 수행합니다. 둘 다 명령문의 일부로 로컬 변수의 유형을 선언합니다. 그러나 그것이 유사성이 끝나는 곳입니다. 두 var
size_t
선언하고 특정 유형이
변수 : size_t
는 unsigned int
로서 일반적 typedef
에드 타입 size_t
을 갖는다. var
은 형식이 나머지 문에서 컴파일러에 의해 유추되어야한다고 선언합니다. int
일 수 있으며 string
일 수 있으며 List<MyClass>
일 수 있습니다 ... 컴파일러는 나머지 문구를 분석하여 수치를 나타냅니다.
C# var
키워드는 type inference과 관련이있는 C++ 0x 'auto'키워드와 가장 유사하며 객체의 크기를 지정하는 플랫폼 독립적 인 방법이 아닌 저장소 유형이 표현식에서 추론됩니다.
당신이 var
의 사용은 당신이 실제로 size_t
를 사용할 필요가 없다는 점에서 size_t
같다 여부를 묻는 경우 C.
- 1. C에서 #
- 2. c에서 비밀번호를 마스크하는 방법은 무엇입니까? C에서
- 3. C에서 __do_global_dtors_aux
- 4. C에서 스트림 ++
- 5. C에서 시작하기
- 6. C에서 휘발성
- 7. 는 C에서
- 8. C에서 수익 #
- 9. C에서 Delphi로
- 10. C에서 상속
- 11. C에서 함수 #
- 12. 다형성 C에서
- 13. Parallel.For C에서 #
- 14. C에서 ObservableCollection
- 15. Objective-C에서 [MyClass class]를 수행해야하는 이유는 무엇입니까? 오브젝티브 C에서
- 16. C에서 "abc"와 { "abc"}의 차이점은 무엇입니까? C에서
- 17. C에서 가능하기 때문에 C에서 temeplatization을 달성 할 수 있습니까?
- 18. C에서 파일을 시작하는 방법
- 19. C에서 malloc 모델 작성
- 20. C에서 프로세스 일시 중단
- 21. C에서 메모리를 확보하기위한 패턴?
- 22. C에서 FIFO 대기열 만들기
- 23. objective-c에서 상수 정의하기
- 24. C에서 .NET 객체 작성하기?
- 25. 타원형 회전 행렬? C에서
- 26. C에서 파일 생성 대기 #
- 27. C에서 cout 함수 만들기?
- 28. C에서 유형의 인터페이스 반영하기
- 29. C에서 스트림 필터링 #
- 30. C에서 다운 캐스트 #