如何扩展任何类型的列表 class
How to extend the List class Of any type
我正在尝试学习 class 扩展,但在定义我的新方法和函数中接受的变量类型时 运行 遇到了困难。我有一个简单的方法,我想将其添加到 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 )
括号里不知道写什么。对于数字操作,我听说我应该为每个接受的数字类型创建该方法的重复版本。但是我想接受任何类型的列表,并且不想创建一百个这种方法。
我写什么?
(将 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()
我正在尝试学习 class 扩展,但在定义我的新方法和函数中接受的变量类型时 运行 遇到了困难。我有一个简单的方法,我想将其添加到 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 )
括号里不知道写什么。对于数字操作,我听说我应该为每个接受的数字类型创建该方法的重复版本。但是我想接受任何类型的列表,并且不想创建一百个这种方法。
我写什么?
(将 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()