2013-12-03 5 views
0

Я понимаю основы обобщений, то есть это проверка и удаление компилятором. Я вижу много кода вроде этого:Класс (T) - Что такое T?

Public Class Person(Of T) 

End Class 

Я не совсем понимаю, что такое T. Я бы ожидал чего-то вроде Person или Of Order, поскольку T не существует в моей проблемной области.

Я считаю, что это говорит о том, что все ссылки на T в классе должны быть экземпляром класса, но я не уверен.

Я провел некоторое время в Google, и я даже перечитал раздел Generics объектно-ориентированного учебника, который у меня есть. Я еще не нашел ответа.

+0

Я думаю, что это означает Тип ... это означает, что вы определите его позже, например 'List (of Person)' – Plutonix

ответ

0

T обозначает тип. (в C++ это шаблон, хотя)

Это означает, что метод является статическим или общим.

Сам T указывает, что метод является общим.

Если вы понимаете дженерики, вам должно быть разумно, что это своего рода заполнитель. (если я правильно понимаю)

Это должно объяснить, почему

Public Class Person(Of T) 

End Class 

, как общественного класса (от ________ (типа) ______)

VB.net: What is static T (C#) in VB.net?

http://msdn.microsoft.com/en-us/library/ms379564%28VS.80%29.aspx

0

Это просто заполнитель, чтобы указать, что Тип будет определен во время выполнения:

Public Class Elements(Of T) 
    Private mList as List(of T) 

... 
End Class 

... 

Friend El as New Elements(of String) 

Мой код создает объект El и передает T (String) классу, который я могу использовать для определения внутренних операций. Это способ использования типизированных объектов, а не наследования множества классов каждого вероятного типа данных или просто объявления таких объектов, как Object.

Иногда вы будете видеть 2 из них:

Foo(Of T, Of TT) 

Это просто означает, что есть 2 типа, которые будут определены позднее. Нет ничего особенного в T - это просто соглашение, Of - это ключевое слово.

1

Это параметр; хотя T является наиболее часто используемым именем, возможны другие названия. Если рассматривать определение метода:

Sub Foo(Bar As Integer) 

T в определении типа играет почти такую ​​же роль, что и Bar в определении метода. Наиболее примечательная вещь о параметрах типового типа отличается от определений параметров, которые в нормальном (Option Strict Off) диалекте VB должны всегда указывать тип [As Integer], параметры типового типа могут указывать тип ограничения Class Foo(Of T As Control), но от этого не требуется.Кроме того, даже если указан тип ограничения, T не является экземпляром от Control, а является типом, который требуется для . от Control.

Смежные вопросы