WriteOnly Property ByRef



我不明白如何在VB.NET中通过引用传递参数。

我试过了:

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"参数。有人能帮忙吗?

谢谢!

ByRef修饰符不能用于属性设置。

只能在方法和构造函数的签名中声明。在这里,它指定可以在被调用的方法中修改参数的基础变量。

在下面的示例中,ByRef修饰符使名为"underlyingVariable"的字段采用新值。通过Value传递变量,它不会被修改,因此将为空:

Private underlyingVariable As Object
Public Sub New()
    MyMethod(underlyingVariable)
End Sub
Public Sub MyMethod(ByRef o As Object)
    o = New Object()
End Sub

不能通过setter的引用传递东西。一定是ByVal。来自VB。净规范:

§9.7.2如果指定了形参列表,它必须有一个成员,该成员除了ByVal之外不能有任何修饰符,并且它的类型必须与属性的类型相同。

我不认为在属性setter中使用ByRef特别有意义。使用ByRef意味着您可能需要更改调用setter的对象的引用。

Form是一个引用类型(类),所以您希望通过值传递它。否则,您将传递引用类型的引用。

相关内容

  • 没有找到相关文章

最新更新