为什么 .Select 将 Enumerable.Empty 更改为 System.Linq.EmptyPartition?

Dav*_*iha 5 c# linq visual-studio xamarin.ios xamarin

看这个例子:

IEnumerable<string> en = Enumerable.Empty<string>(); //{string[0]}
var enSelected = en.Select(id => id);                //{System.Linq.EmptyPartition<string>}
var list = en as IList<object>;                      //{string[0]}
var listSelected = enSelected as IList<object>;      //null
Run Code Online (Sandbox Code Playgroud)

.Select为什么在空枚举上使用会改变它的类型?这可能是 LINQ 中的错误吗?

什么是偶数System.Linq.EmptyPartition?我没有找到任何有关此类型的文档,并且它也不能直接在代码中使用。

我正在使用 Visual Studio 2017 15.4.2,这发生在 Xamarin.iOS 项目上。您能否在您的环境中测试一下,以便我们看看这是否特定于我的环境?

Tim*_*mbo 5

声明的返回Select值为IEnumerable<T>

返回对象的实际类型是实现的一部分,并且永远不应该关心 API 的用户。