رفتن به مطلب

نکاتی در باره توابع ، متغيرها و نحوه استفاده آنها


ارسال های توصیه شده

نکاتی در باره توابع ، متغيرها و نحوه استفاده آنها

ارسال متغير بصورت 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 استفاده کنيم ، پس از محاسبات مقدار متغير تغيير نميکند و نيز مقدار تابع با مقدار اوليه متغير محاسبه ميشود:

 

FunctionUse_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 متغيير بمحض تعريف شدن دوباره ، مقدار قبلي خود را از دست ميدهد.

FunctionUse_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

EndFunction

 

Function Use_OverLoads (ByVal intVar As Integer) As Integer

Return intVar + intVar

EndFunction

 

Response.Write(Use_OverLoads (5))

Response.Write("

" & Use_OverLoads("Over", "Loads"))

 

10 پاسخ :

OverLoads

 

 

منبع:http://www.neghnegh.com

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...