Iman-Emperatour 4937 اشتراک گذاری ارسال شده در 7 اسفند، ۱۳۸۸ نکاتی در باره توابع ، متغيرها و نحوه استفاده آنها ارسال متغير بصورت 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 2 لینک به دیدگاه
ارسال های توصیه شده