假设下面下面的例子:怎么能不为ByRef
当我打电话窗体2从Form1并通过_name Form1的价值。当我显示Form1的_name = Alex?我没有更改Form2中的pname,而构造函数不包含ByRef。
示例代码:
Public Form1
Public _name as String
Sub New
_name = "John"
Dim bla as New Form2(_name)
'now _name=Alex !!
End Sub
End Class
Public Form2
Property _name2 as String
Sub New(pname as String) 'no ByVal !!
_name2 = pname 'even if would be ByVal no pname changed !
_name2 = "Alex"
End Sub
End Class
这是为什么发生?
你的代码实质上忽略了传递的参数 – Plutonix
你是什么意思? – Dino
如果您希望Form2能够更改Form1的'_name'属性值,则需要对表单对象的引用,而不仅仅是属性的*值*。顺便说一句,真的很糟糕的名字。很多许多.NET的东西都有一个Name属性 - 但它们都是'Name'而不是'Name1358'或'_name127' – Plutonix