c# - 了解泛型方法的语法

标签 c# generics

我正在阅读《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/

相关文章:

c# - 将 DateTime 从 UTC 转换为用户位置时区

c# - 运行时异常,递归太深

java - 使用泛型和扩展抽象类

Java:如何从包含更多参数类型的列表中仅返回一种参数类型的对象?

entity-framework - 如何在 Entity Framework 中执行通用插入?

ios - 约束协议(protocol)的关联类型本身

c# - 将 ARGB 十六进制字符串转换为 RGB

C# 计算每个给定范围的函数最小值

Java确保相同的通配符捕获类型

c# - 如何检测我们在 .NET 中运行在 ARM64 版本的 Windows 10 下?