C返回局部變量的值也沒問題啊
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出共和免費做網(wǎng)站回饋大家。
只是如果這個局部變量是指向棧上的內(nèi)存的指針,由于函數(shù)結(jié)束后活動棧被清空,會導(dǎo)致指針失效。
VB.NET不支持指針語法,它不可能返回指向棧上的指針,所以用不著擔(dān)心這個問題。
你的理解
第一點理解是正確的,不過和這個問題關(guān)系不大。因為引用類型本來就不是分配在棧上的,它當(dāng)然就不受函數(shù)的影響。
第二點,那個只是個語法問題。VB6沒有Return語句,所以它必然有另外一種語法來表明函數(shù)的返回值。這個和函數(shù)能否返回正確的對象沒有關(guān)系,就是一種表明函數(shù)返回值的語法。
編譯器確實定義了一個和函數(shù)同名的變量,那個變量就是一個普通的局部變量,作用域就在函數(shù)的局部域里。這個變量沒什么特別的,就是編譯器會在函數(shù)結(jié)束時把這個變量的值作為函數(shù)的返回值返回而已。
有兩種方法:
1.用Right函數(shù),從字符串右邊取出的指定數(shù)量的字符.
Right(string,
length)
取最后一位
A
=
"ABC123"
D
=
RIGHT(A,1)
取最后二位
D
=
RIGHT(A,2)
取最后第二位
D
=
RIGHT(A,2,1)
2.用MID函數(shù)
返回
Variant
(String),其中包含字符串中指定數(shù)量的字符。
語法
Mid(string,
start[,
length])
此發(fā)先要用LEN函數(shù)確定字符串長度,然后才能確定起始位,例:
A
=
"ABC123"
取最后一位
D
=
MID(A,LEN(A),1)
取最后二位
D
=
MID(A,LEN(A)-1,2)
取最后第二位
D
=
MID(A,LEN(A)-1,1)
后一種在取每位字符時配合FOR
NEXT循環(huán)更有用.
自己做個試驗就行了:
Public?Class?Form1
'?在窗體上放個?Label1
Private?Sub?Form1_KeyDown(ByVal?sender?As?Object,?ByVal?e?As?System.Windows.Forms.KeyEventArgs)?Handles?Me.KeyDown
Lable1.Text?=?"KeyCode=?"??e.KeyCode.ToString??vbCrLf
Lable1.Text?=?"KeyData=?"??e.KeyData.ToString??vbCrLf
Lable1.Text?=?"KeyValue=?"??e.KeyValue.ToString
End?Sub
End?Class
運(yùn)行起來,自己按鍵盤試試就知道了。
1、我有一個function,如下:
function b()
'...
return "abc"
end function
2、調(diào)用時,這樣子用:
Response.write(b());
3、運(yùn)行結(jié)果:
abc