我正在阅读《 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(可能是类的泛型类型参数)。这向您展示了泛型类的方法如何添加自己的泛型类型参数,以与声明该方法的类的泛型类型参数一起使用。

09-04 05:45