重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C返回局部变量的值也没问题啊
成都创新互联公司服务项目包括大连网站建设、大连网站制作、大连网页制作以及大连网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,大连网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到大连省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
只是如果这个局部变量是指向栈上的内存的指针,由于函数结束后活动栈被清空,会导致指针失效。
VB.NET不支持指针语法,它不可能返回指向栈上的指针,颂衡所以用不着担心这个问题。
你的理解
第一点理解是正确的,不过和这个问题关系不大。因为引用类型本来就不是分配在栈上的,它当然就不受函数的影响。
第二点,仿旁那个只是个语法问题。VB6没有Return语句,所以它必然有另外一种语法来表明函数的返回值。这个和函数能否返回正确的对象没有关系,就是一种表明函数返回值的语法。
编译器确实定义了一个和函数同名的变量,那个变量就是一个普通的局部变量,作用域就在函数的局部域里。这个变量没什么特别的,就是编译器会在函数结束时把这个变量的值作为函备樱橡数的返回值返回而已。
在VB中,一个function只能用一个return语句返回一个值。哪怕有几个return语句,也只能执行一个。
如果需要返回多个值,可以使用数组,数组的每一个元素值都可以带回来。
单个变量只能在在VB中,一个function只能用一个return语句返回一个值。哪怕有几个return语句,也只能执行一个。
如果需要返回多个值,可以使用数组,数组的每一个元素值禅返都可以带回来。
单个变量只仔袭皮能使用by在VB中,一个function只能用一个return语句返回一个值。哪怕有几个return语句,也只能执行一个。
如果需要返回多个值,可以使用数组,数组的每一个元素值都可以带回来。
单个变量只能在声明函数的某个参数时使用byref前缀。
其他方法如使用全局变念差量等,已经不属于返回值的问题了。
Public Class Form1
Public Class SquareClass '把多线程调用的函数封装到类中,通过类事件返回
Public Value As Double
Public Square As Double
Public Event ThreadComplete(ByVal Square As Double)
派蚂 Public Sub CalcSquare()
Square = Value * Value
RaiseEvent ThreadComplete(Square)
End Sub
End Class
Dim WithEvents oSquare As SquareClass
困销 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '多线程返回值测试,当线程运行完成激发事件
oSquare = New SquareClass()
尘尺埋 Dim t As New Threading.Thread(AddressOf oSquare.CalcSquare)
oSquare.Value = 30
t.Start()
End Sub
Sub SquareEventHandler(ByVal Square As Double) Handles oSquare.ThreadComplete '响应事件函数
MsgBox("The square is " Square)
End Sub
End Class
要返回多个值,有几种办法备族,燃扮最直接的就是用传址参数
Function f1(byref retVal1,byref retVal2)
或者用全局变量(比如模块级变皮滚灶量)
或者返回包装过的对象
或者返回多个返回值糅合的字符串