十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
你的?sub過(guò)程這個(gè)是子過(guò)程,無(wú)返回值的,這里Form1_Load中b仍然 ?b=""
成都創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,先為虞城等服務(wù)建站,虞城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為虞城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
如果你想b="注釋",將你的sub過(guò)程改成自定義函數(shù),用b來(lái)接收返回值就行了,代碼如下
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
Dim?a?As?String?=?"rem"
Dim?b?As?String?=?""
b?=?sub過(guò)程(b,?a)
Me.Text?=?b????????'為什么“b”不是等于?"注釋"
End?Sub
Private?Function?sub過(guò)程(ByVal?輸出?As?String,?ByRef?輸入?As?String)?As?String
If?輸入?=?"rem"?Then
輸出?=?"注釋"
End?If
Return?輸出
End?Function
Public?Class?Form1
Public?Class?SquareClass?'把多線程調(diào)用的函數(shù)封裝到類(lèi)中,通過(guò)類(lèi)事件返回
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?'多線程返回值測(cè)試,當(dāng)線程運(yùn)行完成激發(fā)事件
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?'響應(yīng)事件函數(shù)
MsgBox("The?square?is?"??Square)
End?Sub
End?Class
.Net的所有類(lèi)型都是從System.Object派生而來(lái)的,所以將函數(shù)直接定義成
Function Prior() As Object 即可
不過(guò)在返回之后,調(diào)用此函數(shù)的代碼要注意驗(yàn)證返回值的有效性
C返回局部變量的值也沒(méi)問(wèn)題啊
只是如果這個(gè)局部變量是指向棧上的內(nèi)存的指針,由于函數(shù)結(jié)束后活動(dòng)棧被清空,會(huì)導(dǎo)致指針失效。
VB.NET不支持指針語(yǔ)法,它不可能返回指向棧上的指針,所以用不著擔(dān)心這個(gè)問(wèn)題。
你的理解
第一點(diǎn)理解是正確的,不過(guò)和這個(gè)問(wèn)題關(guān)系不大。因?yàn)橐妙?lèi)型本來(lái)就不是分配在棧上的,它當(dāng)然就不受函數(shù)的影響。
第二點(diǎn),那個(gè)只是個(gè)語(yǔ)法問(wèn)題。VB6沒(méi)有Return語(yǔ)句,所以它必然有另外一種語(yǔ)法來(lái)表明函數(shù)的返回值。這個(gè)和函數(shù)能否返回正確的對(duì)象沒(méi)有關(guān)系,就是一種表明函數(shù)返回值的語(yǔ)法。
編譯器確實(shí)定義了一個(gè)和函數(shù)同名的變量,那個(gè)變量就是一個(gè)普通的局部變量,作用域就在函數(shù)的局部域里。這個(gè)變量沒(méi)什么特別的,就是編譯器會(huì)在函數(shù)結(jié)束時(shí)把這個(gè)變量的值作為函數(shù)的返回值返回而已。