آموزش برنامه نویسی در زبانهای رایج مثل :asp و asp.net و php و html و C و C++ و javascript و visualBasic و delphi و . . .

جمعه 19 شهريور 1389 برنامه نویسی

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


WWW.PRDEV.COM - Iranian Programming Developers

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

 ارسال متغير بصورت 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

 

تهيه كننده مقاله : پولايي

نوشته شده توسط :mostafaتعداد دفعات خوانده شدن مقاله : 14073


نسخه ی قابل چاپ     ذخيره         ارسال برای دوستان       مقاله های مربوط به اين گروه



تمام مطالب اين سايت باذکر ماخذ برای عموم آزاد است