我正在尝试使用IEnumerable.Append扩展方法,但Visual Studio 2017抱怨它不存在。但同时,可以找到其他扩展方法,例如Union。这对我来说毫无意义。
有人知道我在想什么吗?
还有其他我必须添加引用的程序集吗?还是这是一种较新的扩展方法?我的目标是.NET 4.7和更高版本的Windows 10机器
这是我整理的一些示例代码,放在我的相同源文件中以说明问题。
// Using statements.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
// Append fails to build but Union succeeds...???
IEnumerable<int> vals1 = new List<int>{ 0, 1, 2 };
IEnumerable<int> vals2 = new List<int>{ 3, 4, 5 };
IEnumerable<int> vals3 = vals1.Append(7); //<-- ERROR. "Append" not found
IEnumerable<int> vals4 = vals1.Union(vals2);
Run Code Online (Sandbox Code Playgroud)
一件奇怪的事情:为了解决这个问题,我单击了“联合”函数名称上的“转到定义”。它带我到了JetBrains反编译器缓存中的Enumerable.cs的反编译版本。在那里,我看到了Union的实现,并且看到了Append的实现。
好像很奇怪 因此,作为实验,我尝试禁用Resharper并再次单击“转到定义”。这次,我带我去了一个Visual Studio编译的Enumerable.cs,它具有Union但没有Append。
编译器是正确的。在.NET Framework 4.7.1中添加了此方法-我认为JetBrains在获取参考源而不过滤版本。因此:请更改为4.7.1,否则将不使用该方法。
您可以在MSDN中的“适用于”下查看版本历史记录