지금까지 제네릭을 통해 Type
매개 변수를 사용하는 이유, 즉 있는가 contravarience 및 covarience뿐만 아니라 아마도 내가 모르는 몇 가지 다른 기능. 일반 형식에는 모든 장점이 있으며 첫 번째 항목도 공유하지 않는 제외 항목이없는 것으로 보입니다. 그래서, 대신에 첫 번째를 사용하는 경우가 있습니까?유형 매개 변수 대 제네릭
답변
절대적으로 : 실행 시간까지 유형을 알지 못할 때. 예를 들어 :
foreach (Type t in someAssembly.GetTypes())
{
Foo(t);
}
는 Foo
제네릭 때 엉덩이에 통증이 있다고 이렇게. 그것은 가능하지만 고통 스럽습니다.
매개 변수가 null
인 경우도 있습니다. 일부 상황에서 유용 할 수 있습니다.
글쎄 그들은 실제로 전혀 같지 않습니다.
두 번째로, 실제로 컴파일 타임 유형의 클래스를 얻었습니다 (다른 사람이 전달한 것). 따라서 특정 함수를 호출 할 수 있습니다 (주어진 인터페이스가 모두있는 경우).
첫 번째 예에서는 '유형'클래스의 개체가 있습니다. 그러므로 당신은 여전히 그것이 무엇인지를 결정하고 그것으로 무엇이든 할 수있는 캐스트를 할 필요가 있습니다.
그것은 (모든 반사 호출이 꽤 될 수 없음)정확히, 두 번째 형태는 모두가 컴파일 타임 검사의 이점. 그래서, 다른 것들 중에서도, 제가 첫 번째 이유를 사용해야 할 이유가 있는지 알고 싶었습니다. 나는 그것들이 다르다는 것을 알지만, 다른 것은 하나의 형식이 다른 것에 대한 필요를 완전히 포함하지 않는다는 것을 의미하지는 않습니다. –
글쎄요, 요점은 두 번째 것보다 완전히 다른 목적으로 첫 번째 것을 사용하는 것입니다. 동일한 메소드 (예 : 공통 메소드 호출 또는 주어진 클래스 유형에 대한 '일반'조치 수행)에 대해서는 절대 사용하지 않을 것입니다. –
Foo(someVariable.GetType()); // allowed
Foo<someVariable.GetType()>(); // illegal
나는 그것이 존의 요점이라고 생각한다. –
- 1. 유형 매개 변수 대 스칼라의 멤버 유형
- 2. 일반 매개 변수 유형
- 3. 일반 유형 매개 변수 및 유형
- 4. IKVM.net이 제네릭 (유형 매개 변수)을 지원하지 않습니까?
- 5. 자유형 제네릭 유형을 유형 매개 변수로 사용
- 6. 생성자 매개 변수 대 메서드 매개 변수?
- 7. 로컬 변수 대 매개 변수
- 8. 일반 유형 매개 변수
- 9. 유형 매개 변수 통합
- 10. C# 메서드 제네릭 매개 변수 매개 변수 버그?
- 11. 다른 일반 매개 변수의 제네릭 유형 사용
- 12. WCF 작업 매개 변수 문자열 대 닷넷 유형 (모범 사례)
- 13. OpenGL glGetTexImage2d 유형 매개 변수?
- 14. 시행 다른 유형 매개 변수
- 15. 변환 문자열 매개 변수 유형
- 16. 자바 : - 작동 제네릭 클래스 매개 변수
- 17. Functor 대 템플릿 매개 변수
- 18. C# 제네릭 유형 결정
- 19. 기본 유형 매개 변수 리터럴 클래스 매개 변수
- 20. 자바 제네릭 - 유형
- 21. 자바 제네릭 infering 유형
- 22. 제네릭 권투 대
- 23. 래퍼 유형 대 패스 유형 매개 변수의 긴 목록
- 24. 웹 서비스 교차 언어 매개 변수 유형
- 25. 사용 유형 매개 변수 및 유지 mixin
- 26. 리플렉션을 사용하여 유형 매개 변수 액세스
- 27. Crystal Reports 2008 - 매개 변수 유형 문제
- 28. 하나의 테이블에 다른 매개 변수 유형 저장
- 29. Linq 표현식 매개 변수 유형 바꾸기
- 30. 스칼라의 순환 유형 매개 변수 정의
- 고통이 나에게 일반적으로 더 중요하지만 :) –
을 절대적으로 제네릭 함께 할 수도 많이 비싸고 느린 –