Rob*_*ers 1 .net generics ienumerable
在下面的示例中,如果使用GetPeople的客户端代码想要将每个人的姓名和年龄打印到控制台,则必须使用反射(我猜)确定该查询包含IEnumerable(Of Person),然后将其转换为这样可以获得它的属性.
Public Function GetPeople() As IEnumerable
Dim query = From p As Person In People.AsEnumerable() _
Select p
Return query
End Function
Run Code Online (Sandbox Code Playgroud)
IEnumerable的通用形式似乎对客户更有用,更有用:
Public Function GetPeople() As IEnumerable(Of Person)
Dim query = From p As Person In People.AsEnumerable() _
Select p
Return query
End Function
Run Code Online (Sandbox Code Playgroud)
我确信有一个原因 - 那么,为什么IEnumerable会比IEnumerable(Of T)更受青睐?
谢谢.
从我看来,从来没有.IEnumerable<T>继承IEnumerable,所以暴露将IEnumerable<T>你所知道的内容传达T给调用者,同时仍允许在泛型之前编写的函数使用该集合.
非通用IEnumerable存在的原因是历史的.