.net List(列表(对象))扩展

Neb*_*Neb 1 .net vb.net extension-methods

为什么这个扩展:

<Extension()> _
    Public Function GetLastItem(ByVal l As List(Of Object)) As Object
        Return l(l.Count - 1)
    End Function
Run Code Online (Sandbox Code Playgroud)

作为类型的例子List(of Object)而不是类型的例子List(Of List(Of Object))

对象是.net中最通用的类​​型,所以List(of Object)是一个Object,扩展应该工作吗?

Jon*_*eet 7

不,a List(Of List(Of Object))不是List(Of Object).例如,您可以Object()向后者添加新内容,但不能向前者添加新内容.

另外,正如我喜欢的那样:一堆香蕉和水果碗不一样.

尽管如此,为什么你还要写这个并不完全清楚 - 为什么不直接使用Last()扩展方法IEnumerable(Of T)呢?(那已经有了优化IList(Of T),如果这是你担心的.)

可以让你的方法通用 - 理想的目标IList(Of T)而不仅仅是List(Of T)- 但我建议你只使用Last()...