【问题标题】:How to extend the List class Of any type如何扩展任意类型的List类
【发布时间】:2021-10-21 17:18:17
【问题描述】:

我正在尝试学习类扩展,但在定义我的新方法和函数中接受的变量类型时遇到了困难。我有一个简单的方法,我想将它添加到 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 ) 的括号内写什么。对于数字运算,我听说我应该为每个接受的数字类型创建方法的重复版本。但是我想接受任何类型的列表,并且不想创建一百个这种方法。

我要写什么?

【问题讨论】:

  • What do I write? - T?
  • @GSerg 它说“BC30002:未定义类型'T'”
  • Sub RemoveLast(Of T)(FromList As List(Of T))?
  • @Gserg 谢谢!

标签: vb.net extension-methods


【解决方案1】:

(将 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()

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 2022-09-27
    • 2012-12-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多