我不明白如何在VB.NET中传递参数byref。
我试过了:
Private m_Form As frmMain
Public WriteOnly Property MyForm() As Form
Set(ByRef value As Form)
m_Form = value
End Set
End Property
但是VB.NET不喜欢“Byref”这个论点。 有人可以帮忙吗?
谢谢!
答案 0 :(得分:1)
ByRef修饰符不能在属性设置器中使用。
它只能在method'ss和constructor的签名中声明。它指定可以在被调用的方法中修改参数的基础变量。
在以下示例中,ByRef修饰符使名为“underlyingVariable”的字段获取新值。通过将值传递给Value,它将不会被修改,因此将为null:
Private underlyingVariable As Object
Public Sub New()
MyMethod(underlyingVariable)
End Sub
Public Sub MyMethod(ByRef o As Object)
o = New Object()
End Sub
答案 1 :(得分:0)
你不能通过引用来传递东西。它必须是ByVal
。从VB.NET规范:
§9.7.2如果指定了参数列表,则它必须有一个成员,该成员必须没有除ByVal之外的修饰符,并且其类型必须与属性的类型相同。
我认为在属性设置器中使用ByRef并不是特别有意义。使用ByRef意味着您可能想要更改调用setter的引用。
Form
是引用类型(类),因此您希望按值传递它。否则,您将传递引用类型的引用。