首页 > 解决方案 > 如何扩展任意类型的List类

问题描述

我正在尝试学习类扩展,并且在定义我的新方法和函数中接受的变量类型时遇到了困难。我有一个简单的方法,我想将它添加到 List 对象中,这将是从列表中删除最后一个元素的简写。

Imports System.Runtime.CompilerServices
Module ListExtensions
    <Extension()>
    Sub RemoveLast(FromList As List(Of ))
        FromList.RemoveAt(FromList.Count - 1)
    End Sub
End Module

我不知道在括号内写什么List(Of )。对于数字运算,我听说我应该为每个接受的数字类型创建方法的重复版本。但我想接受任何类型的列表,并且不想创建一百个这种方法。

我写什么?

标签: vb.netextension-methods

解决方案


(将GSerg的评论推广到答案......)

您可以将泛型方法编写为扩展方法;事实上,Linq 都是泛型的扩展方法。结果将是这样的:

<Extension>
Public Sub RemoveLast(Of T)(ByVal this As List(Of T))
    this.RemoveAt(this.Count - 1)
End Sub

通用参数将在调用中推断,您无需指定它,例如这将起作用:

Dim myList As New List(Of Integer) From {1, 2, 3, 4}
myList.RemoveLast()

推荐阅读