vb.net中关于byval和byref的使用
在vb.net中,byval和byref使用是不同的: .NET中CLR的类型系统将对应简单值的类型同对应传统“对象”的类型区分开来。 前者被称为值类型(value type),后者被称为引用类型(reference type)。
下面有一个例子作为说明(是我从百度空间里转的): 3) 向方法传递参数是赋值的变体。当向方法传递参数时,方法的声明 决定参数是按引用传递还是值传递(不管参数是值类型还是引用类 型)。默认是按值传递参数(ByVal),将导致该方法或者被调用方具 有自己的该参数值的私有拷贝。如果参数是引用类型,那么,按值 传递的是引用(而不是实例,就是把对该实例的引用复制一份传递给 参数) Dim o As Object = New Object Private Sub Adjust(ByVal obj As Object) '... End Sub Adjust(o) '<--- 这里其实,有参数赋值的过程 o = obj,' o被方法Adjust复制了一份。 ' 因为o是引用类型,所以o和obj指向同一实例。 ' 这里修改了obj就相当修改了o ----------------------------------------------------- 修改一下Adjust方法: Private Sub Adjust(ByVal obj As Object) obj = New Object End Sub 再调用这个方法的时候,obj在方法里指向了一个新的实例, 与o指向的实例没关系了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |