vb.net - 如何扩展任意类型的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 )
。对于数字运算,我听说我应该为每个接受的数字类型创建方法的重复版本。但我想接受任何类型的列表,并且不想创建一百个这种方法。
我写什么?
解决方案
(将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()
推荐阅读
- apache-kafka - 如何从kafka中的__consumer_offsets主题中找到消费者主题和组id?
- laravel - Laravel Role HasMany 关系
- php - 如何在 magento 2 的可配置产品页面上添加自定义 phtml 文件
- amazon-web-services - 未调用 AWS API Gateway 自定义授权方
- c++ - 通过霓虹灯实现灰度图像的opencv均值函数
- docker - Docker 步骤结果到日志文件 - Jenkins
- c# - Bamboo 显示测试用例为 0,即使应用程序中有测试用例
- javascript - 给定一个整数数组返回正数,其中存在等效的负数
- elasticsearch - Elasticsearch 中的一个自定义分析器中的多个标记器
- android - 当应用程序在 Oreo 的前台时启动服务时出现 IllegalStateException