2012-06-29 4 views
0

파생 클래스를 생성하려고합니다. 많은 데이터 형식이 될 수있는 Value 속성이 있습니다. 제네릭에 관한 기사를 보았을 때 제 이해가 정확한지 궁금합니다. Generics : <T>이 무엇인지 잘 모르겠습니다. 설명해 주시겠습니까?

는 추상적 인 필요합니까 :

BaseClass<T> 

을하고 싶은 상속 :

InheritingClass: BaseClass<int> 

는 기본적으로 동일시 : 유형으로 취급, 어디 BaseClass로에 정의 된 유형 Tint 때 InheritingClass를 통해 사용?

그건 내 이해이며, 나는이 클래스의 나머지 부분을 빌드하고 나가는 길을 찾기 전에 올바른지 확인하기를 원합니다. 제네릭을 처음 사용하는 경우입니다.

+1

제네릭을 사용한 적이 없다면 [이 MSDN 기사] (http://msdn.microsoft.com/en-us/library/ms379564(v=80) .aspx)를 읽을 수 있습니다. 조금 큽니다. 그러나 MSDN 기사처럼 매우 읽기 좋습니다. –

답변

2

어디 이미 @BoltClock에 의해 언급 int 형

로 취급 InheritingClass의 타입 T가, 이것은 사실이 아니다. 당신이 말하는 것을 의미한다면 나는, 그러나, 궁금 :

어디 BaseClass로의 타입 T가, 유형 INT

로 취급이 당신이 무엇을 의미하는 경우, 당신은 참으로 정확 .

+0

좋은 캐치. 왜 내가 직접 생각하지 않았는지 모르겠습니다. – BoltClock

+0

Yah, 나는 BaseClass에 T가있는 곳이면 어디서든 상속받을 때 int로 취급 될 것입니다. 따라서, BaseClass에서 InheritedClass를 통해 정의 된 T 타입의 속성을 사용하면 int가됩니다. – Yatrix

+0

@ Yatrix :이 경우에는 질문을 편집하고 대신 내 질문을 편집하거나 Kevin의 답변을 수락해야합니다. – BoltClock

5

아니요, 그렇지 않습니다. 귀하의 클래스가 구체적으로 BaseClass<int>에서 상속된다는 것을 의미합니다. 이처럼 InheritingClass에서 제네릭 형식 매개 변수 T를 정의하는 경우 :

InheritingClass<T> : BaseClass<int> 

그런 다음 해당 유형의 매개 변수는에 InheritingClass를 관련된 자체 회원 및 어떤 식 으로든에서 BaseClass 적용되지 않습니다

. 또한 TInheritingClass은 자동으로 int으로 인식됩니다. 즉, 두 유형 매개 변수는 서로 독립적입니다.

0

제네릭은 모든 유형에서 사용할 수 있도록 쉽게 사용자 정의 할 수있는 유형 안전 클래스를위한 것입니다. "T"는 해당 클래스와 함께 사용하려는 유형의 자리 표시 자입니다.

http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

"제네릭은 실제 데이터 유형에 투입하지 않고, 형태 보증 된 데이터 구조를 정의 할 수 있습니다."

관련 문제