为什么发送者的行为就好像它已被作为byref传递一样?

时间:2015-06-24 19:47:43

标签: vb.net

isnt发件人是否以byval方式传递?如果是这样,那么为什么发送方对象的行为就像它被作为byref传递一样。我们能够更改下面代码中明显提到的按钮发送器上的按钮文本。

Private Sub Button_Click(byval sender As Object,byval  e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click, Button8.Click, Button9.Click
    DirectCast(sender, Button).Text = "You clicked me!"
End Sub

2 个答案:

答案 0 :(得分:3)

将对sender对象的引用的副本传递给该方法。这意味着当您更改文本时,您将在同一对象上更改它。我建议你去读Jon Skeet的这篇精彩文章: Parameters

答案 1 :(得分:1)

当您使用基元,字符串或结构(布尔值,整数,日期行等)时,ByVal会发送副本。 发送对象时,不会复制该对象,但会复制其引用。因此,您使用相同的对象。按钮是一个对象。