C返回局部變量的值也沒(méi)問(wèn)題啊
創(chuàng)新互聯(lián)主營(yíng)福貢網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā)公司,福貢h5小程序開(kāi)發(fā)搭建,福貢網(wǎng)站營(yíng)銷(xiāo)推廣歡迎福貢等地區(qū)企業(yè)咨詢(xú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ù)的返回值返回而已。
沒(méi)有返回值的。
事件必須定義為沒(méi)有返回值的委托。
如果要判斷事件是否觸發(fā),必須監(jiān)聽(tīng)該事件,在該事件處理中插入一個(gè)布爾變量。
Dim?全局布爾變量?As?Boolean
Private?Sub?Button1_Click(sender?As?Object,?e?As?EventArgs)?Handles?Button1.Click
全局布爾變量?=?True
End?Sub
'另外一個(gè)事件判斷是否觸發(fā)過(guò)這個(gè)事件
Private?Sub?Button2_Click(sender?As?Object,?e?As?EventArgs)?Handles?Button2.Click
If?全局布爾變量?=?True?Then
全局布爾變量?=?False?'記得把這個(gè)變量還原
'做自己的事情???????
End?If
End?Sub
Thread不會(huì)返回值的。你應(yīng)該創(chuàng)建委托的,使用委托的異步方法
Dim funcInt32 As Func(Of String, Integer) = AddressOf GetList
Dim s As IAsyncResult = funcInt32.BeginInvoke("(參數(shù))", Nothing, Nothing)
’在要獲得結(jié)果的地方調(diào)用EndInvoke方法結(jié)束異步調(diào)用并獲得結(jié)果。
Dim result As Int32 = funcInt32.EndInvoke(s)