调用API, ByVal怎么也能修改String的值
声明:Declare Ansi Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal name As String, ByRef nSize As Long) As Long
调用:
Dim lLength As Long = 255
Dim strName As String = New String(" ", lLength)
Dim lReturn As Long
lReturn = GetComputerName(strName, lLength)
函数的声明里第一个参数是ByVal, 可为什么还能修改改strName的值?
--------------------编程问答-------------------- 值传递 和值类型变量 引用传递和引用传统变量 是不同的概念
int是值类型 值传递byval ,就不能改变值,引用传递byref,就可以改变值
string是引用类型 值传递byval ,不能改变值,这儿的值是字符串的地址了,就是不能改变这个字符串指向别的字符串,但可以改变这个地址下的内容
byref 不仅能改变内容,还能指向别的字符串
补充:.NET技术 , VB.NET