本文介绍了传递对象时有关ByVal和ByRef的快速问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 你好, 刚刚遇到这个问题,并且想知道是否某人 可以解释它,因为它有点困惑我。 /> 假设我有以下课程: 公共类CTest 私人m_objCMember作为CMember 公共职能addMember(ByVal objMember As CMember) m_objCMember = objMember 结束功能 结束班级 Public Class CMember Public strFirstName As String Public strLastName As String End Class And下面使用它们的代码: Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)处理Button1.Click Dim objTest As New CTest Dim objMember As New CMember objMember.strLastName =" last name" objMember.strFirstName ="名字" objTest.addMember(objM ember) objMember.strFirstName =" TEST FIST NAME" End Sub 我怎么来的运行最后一行代码(objMember.strFirstName =" TEST FIST NAME") - 属性objTest.m_objCMember.strLastName中的值更改为 TEST FIST NAME同样。 我想在VB中按值传递参数时,它只传递一个 的副本对象或变量 但不是参考! 我在这里遗漏了什么吗? 提前一百万感谢 干杯, 德米特里 Hi there, Just came across this problem and was wondering if someonecan shed a light on it as it somewhat puzzles me.Suppose I have the following classes: Public Class CTestPrivate m_objCMember As CMemberPublic Function addMember(ByVal objMember As CMember)m_objCMember = objMemberEnd FunctionEnd Class Public Class CMemberPublic strFirstName As StringPublic strLastName As StringEnd Class And the following code that uses them: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.ClickDim objTest As New CTestDim objMember As New CMember objMember.strLastName = "last name"objMember.strFirstName = "First name" objTest.addMember(objMember) objMember.strFirstName = "TEST FIST NAME"End Sub How come when I run the last line of code (objMember.strFirstName = "TESTFIST NAME")- the value in the property objTest.m_objCMember.strLastName changes to"TEST FIST NAME" as well.I thought in VB when you pass parameters by value, it just passes a copy ofthe object or variablebut not the reference!Am I missing something here?Thanks a million in advanceCheers,Dmitry推荐答案 您的类是引用类型。 ByVal确实传递了一份副本,但是 参考的副本,而不是对象的副本。 另见: http://groups.google.com /groups?selm...ews.freenet.de - Armin 如何报价以及为什么: http://www.plig.net/nnq /nquote.html http:// www。 netmeister.org/news/learn2quote.html Your class is a reference type. ByVal does pass a copy, but a copy of thereference, not a copy of the object. see also: http://groups.google.com/groups?selm...ews.freenet.de--Armin How to quote and why: http://www.plig.net/nnq/nquote.html http://www.netmeister.org/news/learn2quote.html 这篇关于传递对象时有关ByVal和ByRef的快速问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-28 11:41