Что означает вызов метода класса VB с двумя наборами скобок и ключевым словом Of?

Есть вызов метода (который я анонимизировал) в классе VB, на который я смотрю, это выглядит следующим образом:

Dim variableName As ClassName = methodName(Of ClassName)(someOtherArg)

Определение метода в другом файле начинается со следующего:

Protected Function methodName(Of ClassName As {SuperClassName, New})(someOtherArg As someOtherClassName) As ClassName

Помимо общих имен, что делает этот синтаксис? Кажется, что методу methodName передаются два аргумента, но первый из них имеет тип переменной или что-то в этом роде (возможно, какой-то полиморфизм?).

По сути, я просто пытаюсь понять, что делает этот синтаксис VB, и мне не удалось найти в Google такие вещи, как «определение функции VB с ключевым словом Of» и т. Д. Спасибо.


person HartleySan    schedule 28.11.2018    source источник
comment
Универсальные типы в Visual Basic   -  person GSerg    schedule 28.11.2018


Ответы (1)


Of указывает универсальный тип или общую процедуру. Они подробно обсуждаются в справке F1 в разделах Visual Basic/Возможности языка Visual Basic/Типы данных в Visual Basic/Общие типы в Visual Basic и .../Общие процедуры в Visual Basic. .

person Craig    schedule 28.11.2018
comment
Спасибо. Следующая статья помогла лучше объяснить это: docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/. Я все еще нахожу синтаксис немного сложным, но, возможно, это просто потому, что я еще не полностью знаком с VB. Спасибо. - person HartleySan; 28.11.2018
comment
@HartleySan Эквивалентный синтаксис в C# будет использовать символы больше/меньше (или угловые скобки, если вы предпочитаете), например. MethodName<ClassName>(someOtherArg). - person Craig; 28.11.2018
comment
Это действительно помогает, Крейг. Спасибо. - person HartleySan; 28.11.2018