在 vb.net 中,我正在尝试创建复制/反向/合并堆栈的扩展。请注意,它可能已经存在,但我面临一个问题。
我有一个名为 utility.vb 的模块,它包含一大堆<Extension()>,就像我正在尝试编写的 Duplicate 一样。
''' <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())
但没有任何成功。
有人可以帮助我(指出我的错误,纠正它或给我一种方法来实现我的需要,而无需自己编写函数)?
PS:我使用 Stack 是因为我需要以 Push 的相反顺序弹出,这似乎很合适。