实现无类型约束的数组参数扩容方法相关问题咨询
泛型版本数组扩容添加元素实现方案
你原有的实现只能接收Object()类型的数组,当传入具体类型(如Integer()、String())的数组时,会触发类型不匹配的转换错误,改用泛型可以让方法适配任意类型的数组,避免类型转换问题。
正确实现代码
Public Sub ArrayAdd(Of T)(ByRef arr As T(), newItem As T) Try If IsNothing(arr) Then arr = New T() {newItem} Exit Sub End If Array.Resize(arr, arr.Length + 1) arr(arr.Length - 1) = newItem Catch ex As Exception Throw New ApplicationException(ex.Message, ex) End Try End Sub
调用示例
' 初始化空字符串数组 Dim strArr As String() = Nothing ' 添加元素,编译器可自动推断泛型类型无需手动指定 ArrayAdd(strArr, "第一条数据") ArrayAdd(strArr, "第二条数据") ' 对值类型数组同样生效 Dim intArr As Integer() = {1,2,3} ArrayAdd(intArr, 4) ' 执行后intArr内容为 {1,2,3,4}
说明
- 泛型参数
Of T会根据你传入的数组类型自动匹配,全程不会发生强制类型转换,从根源上解决类型报错问题 - 逻辑和你原有实现完全一致,仅替换了固定的
Object类型为动态泛型类型,完全符合你原有的功能需求
内容的提问来源于stack exchange,提问作者andrea.bignardi
相关产品推荐
相关产品推荐

