•✿♥lostlove♥✿•
New member
نکاتی در باره توابع ، متغیرها و نحوه استفاده آنها در ( VB )
ارسال متغیر بصورت 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