|
نکاتی
در باره توابع ، متغيرها و نحوه استفاده آنها
ارسال
متغير بصورت
ByRef و
ByVal
اگر
موقع تعريف يک تابع قبل از نام متغير از عبارت
ByRef استفاده نماييم هنگام
فراخوانی تابع با قراردادن متغيری در تابع که دارای مقدارميباشد ، پس از محاسبات ،
مقدار متغير نيز تغيير ميکند. در ضمن مقدار تابع با آخرين مقدار متغير محاسبه
ميگردد:
Function
Use_ByRef(ByRef intVar As
Integer)
intVar = intVar + 1
Return intVar
End
Function
Dim
intMyVar
As Integer
intMyVar
= 1
Response.Write(intMyVar
& "-----" & Use_ByRef(intMyVar))
پاسخ
:
2-----3
ولی
اگر در مثال فوق ازByVal
استفاده کنيم ،
پس از محاسبات مقدار
متغير تغيير نميکند و نيز مقدار تابع با مقدار اوليه متغير محاسبه ميشود:
Function
Use_ByVal(ByVal
intVar As Integer)
intVar = intVar + 1
Return intVar
End
Function
Dim
intMyVar
As Integer
intMyVar
= 1
Response.Write(intMyVar
& "-----" & Use_ByVal(intMyVar))
پاسخ
:
1-----2
متغير
Static
اگر
درون تابعی متغيری را بصورت Static
تعريف نماييم و مقدار اين متغير طي عمليات تابع تغيير نمايد در هرفراخوانی متغير
ياد شده با آخرين مقدارخود در محاسبات شرکت ميکند.
اين
مورد بر خلاف تعريف متغيير بوسيله دستور
Dim است . چون در
Dim متغيير بمحض تعريف شدن
دوباره ، مقدار قبلي خود را از دست ميدهد.
Function
Use_Static()
Static intCount As
Integer
intCount = intCount+1
Return intCount
End
Function
Response.Write(
"
" & Use_Static)
Response.Write(
"
" & Use_Static)
Response.Write(
"
" & Use_Static)
1
پاسخ
:
2
3
تعريف
توابع بصورت
OverLoads
در
نظر بگيريد كه در جايي از برنامه خود احتياج داشته باشيد كه يك فانكشن را فراخواني
و پارامترهاي ورودي آنرا كه استرينك است به آن پاس نماييد. حال اگر شما مجبور
باشيد در مواقعي خاص به اين فانكشن بجاي استرينگ ، عدد يا يك متغيير از نوع ديگري
پاس كنيد ، چكار بايد كرد؟ آيا بايد دو تا فانكشن با نامهاي متفاوت و نوع عملكرد
متفاوت تعريف نمود ؟ آيا راه حل ديگري وجود ندارد؟
در
اينجا راه حل ديگري نيز وجود دارد كه اگر دو يا چند تابع را با يک نام ثابت
ولی تعداد يا نوع متغير متفاوت در يک کلاس تعريف نماييم ميتوانيم از هر کدام
برحسب نياز استفاده کنيم:
Function
Use_OverLoads(ByVal strVar1
As String, ByVal
strVar2 As String)As
String
Return strVar1 & strVar2
End
Function
Function
Use_OverLoads (ByVal intVar
As Integer) As
Integer
Return intVar + intVar
End
Function
Response.Write(Use_OverLoads
(5))
Response.Write("
" & Use_OverLoads("Over", "Loads"))
10
پاسخ
:
OverLoads
تهيه
كننده مقاله : پولايي
|