对不起,如果我问的是愚蠢的问题,但任何人都可以解释以下两个调用 (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/