首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WriteOnly属性ByRef

WriteOnly属性ByRef
EN

Stack Overflow用户
提问于 2014-03-09 17:50:32
回答 2查看 1.6K关注 0票数 0

我不明白如何在VB.NET中通过how传递一个论点。

我试过这个:

代码语言:javascript
复制
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“参数。有人能帮忙吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-09 17:55:15

您不能通过引用与设置传递事物。一定是ByVal。来自VB.NET规范:

§9.7.2如果指定了参数列表,则必须有一个成员,该成员必须除ByVal以外没有任何修饰符,而且其类型必须与属性的类型相同。

我不认为在属性设置器中使用ByRef特别有意义。使用ByRef意味着您可能希望更改调用setter的引用。

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

票数 0
EN

Stack Overflow用户

发布于 2014-03-09 18:14:54

不能在属性设置程序中使用ByRef修饰符。

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

在下面的示例中,ByRef修饰符将导致名为"underlyingVariable“的字段接受新值。通过按值传递变量,它将不会被修改,因此为null:

代码语言:javascript
复制
Private underlyingVariable As Object

Public Sub New()
    MyMethod(underlyingVariable)
End Sub

Public Sub MyMethod(ByRef o As Object)
    o = New Object()
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22285737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档