我正在阅读《C# In Depth》一书,下面是示例:
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
,大概是该类的泛型类型参数。这向您展示了泛型类的方法如何添加自己的泛型类型参数,以便与声明该方法的类的泛型类型参数一起使用。
关于c# - 了解泛型方法的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208629/