【发布时间】:2020-08-28 01:24:37
【问题描述】:
在 vb.net 中,我正在尝试创建一个扩展来复制/反转/合并堆栈。 请注意,它可能已经存在,但我遇到了问题。
我有一个名为 utility.vb 的模块,其中包含一大堆
''' <summary>
''' Duplicate a stack of object to another
''' </summary>
''' <typeparam name="T">Object type in the stack</typeparam>
''' <param name="s">Stack to duplicate</param>
''' <returns></returns>
<Extension()>
Public Function Duplicate(Of T)(ByVal s As Stack(Of T())) As Stack(Of T())
Dim tmp As New Stack(Of T())
For i As Integer = s.Count - 1 To 0 Step -1
tmp.Push(s(i))
Next
Return tmp
End Function
我正在一个名为 labelStack 的堆栈中执行各种推送。但是当我从我的代码中调用 Duplicate 函数时(因为我需要多次重复使用同一个堆栈),它没有编译(请注意堆栈是由自己创建的对象类组成的)
Dim summaryStack As Stack(Of CCNode) = labelStack.Duplicate()
错误是“'Duplicate'不是'Stack(Of MyForm.CCNode)'的成员”
我也尝试像这样更改扩展程序的签名:
Public Function Duplicate(Of T As {New})(ByVal s As Stack(Of T())) As Stack(Of T())
但没有任何成功。
有人可以帮助我(指出我的错误,纠正它或给我一种方法来实现我的需要,而无需自己编写函数)?
P.S.:我使用 Stack 是因为我需要以 Push 的相反顺序 Pop 并且看起来很合适。
【问题讨论】:
-
根据您的方法声明,您需要传入一堆 T 数组,然后返回一堆 T 数组。我怀疑那是您想要的。假设我了解您的要求,请参阅我的答案以获得正确的声明。
标签: vb.net stack compiler-services