c# - ToArray() 和 ToArray<int>(); 之间的区别

标签 c# .net

对不起,如果我问的是愚蠢的问题,但任何人都可以解释以下两个调用 (ToArray) 之间的区别。在智能感知中,它不会将它们显示为重载方法,当然这两个调用的输出是相同的。

List<int> i = new List<int> { 1, 2, 5, 64 };
int[] input = i.Where(j => j % 2 == 1).ToArray();
input = i.Where(j => j % 2 == 1).ToArray<int>();

最佳答案

没有区别,是完全相同的 ToArray() 方法。编译器可以简单地推断出您想要 ToArray<int>表达式语法的版本。 Where() 的返回值被推断为返回 int。换句话说,它使用 Where<int>() .这是从 List<> 的类型推断出来的。所以它可以推断出你需要 ToArray<int> .

所以类型推断链是List<int> => Where<int>() => ToArray<int>() .

将列表更改为,比如说,List<long>表达式仍然有效,无需修改。

关于c# - ToArray() 和 ToArray<int>(); 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056316/

相关文章:

c# - 从 IPHostEntry 获取有效 IP

c# - 在可移植类库上使用 Band sdk

c# - 如何定义相互依赖的属性

.net - 如何将此 StackPanel 用作资源

c# - 无需重新编译即可向 C# 应用程序添加功能的方法

c# - 如何将包含十六进制对的字符串转换为字节?

c# - 使用 for each 时识别最后一个循环

c# - 使用运行时已知的类型创建委托(delegate)

c# - 获取 DbContext Entity Framework Core 2.1 中的实体模型列表

C# 动态字段取决于 "T"类型,没有硬编码