我正在阅读《 C#深度学习》一书,这是示例:
List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter)
我不了解这一部分:
ConvertAll<TOutput>
在剖析他的榜样时,他还说:
"The method's name is ConvertAll and it has a single param of Converter<T, TOutput>
仍然看到它没有说
ConvertAll<TOutput>
中的内容/原因 最佳答案
我认为您的困惑源于名称TOutput
在程序文本中出现的时间早于其声明的事实。
这是怎么回事-回忆一下定义常规方法的语法如下:
return_type method_name ( param1_type param1, param2_type param2, ... )
通用方法在方法名称后添加尖括号:
method_name <gnenric_type_param1, generic_type_param2, ...> ( param1_type param1, param2_type param2, ... )
所以现在您的方法如下所示:
return_type ConvertAll<TOutput> ( param1_type param1, param2_type param2, ... )
什么是退货类型?是
List<TOutput>
。 TOutput
来自尖括号中的类型参数,但用于尖括号之前的返回类型:List<TOutput> ConvertAll<TOutput> ( param1_type param1, param2_type param2, ... )
其余的声明很简单:您只有一个参数
Converter<T, TOutput> converter
,它使用方法的TOutput
泛型类型参数以及T
(可能是类的泛型类型参数)。这向您展示了泛型类的方法如何添加自己的泛型类型参数,以与声明该方法的类的泛型类型参数一起使用。