我正在研究一个解析模板的类。这是我所拥有的缩写版本:
november08
如您所见,它的设计是递归的。首次实例化类时,调用者将模板名称传递给构造函数,然后设置各种内容并调用Public Class Parser
Public Vars As New Dictionary(Of String, String)
Public Tags As New Dictionary(Of String, String)
Private Template As String
Public Sub New(ByRef _Template As String, Optional ByVal _Recursing As Boolean = False)
Recursing = _Recursing
Template = _Template
End Sub
Public Sub Go()
' Do stuff, extract a portion of the template
Dim Page as Parser = New Parser(portion, True)
Page.Go()
End Sub
End Class
。当它递归时出现问题:Go()
创建一个新实例,而不是模板名称,传递要处理的模板的一部分,这就是Go()
为_Template
的原因。问题是,ByRef
的新实例无法访问它。 VB没有指针,所以有没有办法让构造函数中的其他类可以使用该引用?我在谷歌上搜索了一些文章,但找不到任何能回答我问题的文章。 This article听起来像Go()
数据类型会做我想要的,所以我试过
Object
但它没有做我想要的。我还发现this似乎在问同一个问题,并且似乎说将parm更改为 Private Template As Object
可以解决问题,但这没有任何意义。