当前位置:编程学习 > C#/ASP.NET >>

调用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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,