C #에서 "T"는 무엇을 의미합니까?


79

저는 VB 배경 지식이 있으며 새 작업을 위해 C #으로 변환 중입니다. 나는 또한 일반적으로 .NET에서 더 나아지기 위해 노력하고 있습니다. 사람들이 게시하는 샘플에서 "T"라는 키워드가 많이 사용되는 것을 보았습니다. C #에서 "T"는 무엇을 의미합니까? 예를 들면 :

public class SomeBase<T> where T : SomeBase<T>, new()

무엇을 T합니까? 왜 사용하고 싶습니까?


1
T ~ >> type : 원하는 모든 유형
AminM

답변:


50

일반 유형 매개 변수 의 기호입니다 . 예를 들어 다음과 같이 다른 것일 수도 있습니다.

public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()

T 만 Microsoft에서 사용하고 권장하는 기본값입니다.


45

T는 키워드가 아니라 제네릭 유형의 자리 표시 자입니다. Microsoft의 Generics 소개 보기

동등한 VB.Net 구문은 다음과 같습니다.

Public Class SomeBase(Of T As {Class, New}))

15

T 대신 사용되는 다른 이름의 좋은 예 would는 해시 테이블 클래스입니다.

public class Dictionary<K,V> ...

K키와 V가치를 의미하는 곳 . 나는 T유형을 의미 한다고 생각 합니다.

당신은 이것을 주위에서 보았을 것입니다. 연결할 수 있다면 상당히 도움이 될 것입니다.


5

그것은 "일반"입니다. 사람들이 이미 언급했듯이 개념에 대한 Microsoft 설명 이 있습니다. "T"인 이유는 이 질문을 참조하십시오 .

간단히 말해 특정 유형에 특화된 클래스 / 메서드를 만들 수 있습니다. 고전적인 예는 System.Collections.Generic.List<T>클래스입니다. System.Collections.ArrayList유형의 항목 만 저장할 수 있다는 점을 제외 하면과 동일 합니다 T. 이것은 유형 안전성을 제공합니다. (우연히 또는 그렇지 않으면) 잘못된 유형의 항목을 목록에 넣을 수 없습니다. System.Collections.Generic공간이 사용할 수있는 여러 가지 다른 다른 수집 유형이 포함되어 있습니다.

어디에서 사용할 수 있는지는 당신에게 달려 있습니다. 때때로 발생하는 많은 사용 사례가 있습니다. 대부분 자체 제작 한 컬렉션 (내장 된 컬렉션으로 충분하지 않은 경우)이지만 실제로는 무엇이든 될 수 있습니다.


3

가장 좋은 방법은 웹상의 많은 리소스 인 "Generics"에 익숙해지는 것입니다.

T는 키워드가 아니라 이름이며 내가 아는 한 실제로는 무엇이든 될 수 있지만 T는 관례입니다 (하나의 유형 만 필요한 경우, coruse)


2

T제네릭 클래스의 형식 매개 변수의 이름입니다. "Type"을 의미하지만 "Alice"라고 부를 수도 있습니다.

제네릭을 사용하여 불필요하게 코드를 복제하지 않고도 형식이 안전한 방식으로 재사용 성을 높일 수 있습니다. 따라서, 당신은에 대한 쓰기 수업을하지 않아도 ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersons등 대신 제네릭 클래스 쓸 수 List<T>및 유형의 다음 인스턴스화 객체를 List<Int32>, List<string>, List<char>List<Person>. 컴파일러가 작업을 수행합니다.


1

그것은 "모든 클래스"를 의미합니다. "B", "A"가 될 수 있습니다. "템플릿"때문에 T가 사용 된 것 같아요


T는 참조 및 값 유형이 될 수 있으므로이 컨텍스트에서는 유형이 클래스보다 더 적합합니다.
Brian Rasmussen

1
"템플릿"용어는 C ++ 템플릿에서 비롯된 것이라고 생각합니다. 단일 문자 대문자 매개 변수는 C ++ 매크로 냄새가납니다.
Michael Meadows

T는 C ++ 템플릿에서 동일한 역할로 확실히 선호됩니다 (하지만 "Type"의 약자입니다. 템플릿이 아닌 Type을 대신합니다)
James Curran
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.