وقت بخیر دوستان، با آموزش برنامه نویسی (Visual Basic.NET (VB.NET از وب سایت پی وی لرن همراه هستیم. در این بخش از آموزش، با Sub Procedures یا زیر رویه ها در VB.NET آشنا خواهیم شد.
همان طور که در بخش قبل اشاره کردیم ، رویه های فرعی روش هایی هستند که هیچ مقداری را بر نمی گردانند. در مثال های زیر از روش Sub procedure Main استفاده کرده ایم. تاکنون در این آموزش ها اپلیکیشن های کنسول را نوشتیم. با شروع این برنامه ها ، کنترل به قسمت رویه Main Sub می رود و به نوبه خود ، هر عبارت دیگری را که بدنه برنامه را تشکیل می دهد، ران می کند.
از عبارت Sub برای اعلام نام ، پارامتر و بدنه یك رویه ی فرعی استفاده می شود. سینتکس زیر برای عبارات Sub می باشد.
1 2 3 | [Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub |
که،
Modifiers – سطح دسترسی رویه را مشخص کنید. مقادیر ممکن عبارتند از: عمومی ، خصوصی ، محافظت شده ، دوست ، دوست محافظت شده و اطلاعات مربوط به اضافه بار ، overriding ، اشتراک گذاری و shadowing.
Subname – نام Sub را نشان می دهد.
ParameterList – لیست پارامترها را مشخص می کند.
مثال زیر یک زیر رویه ی CalculatePay را نشان می دهد که پارامترهای ساعت و دستمزد و کل پرداختی یک کارمند را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Live Demo Module mysub Sub CalculatePay(ByRef hours As Double, ByRef wage As Decimal) 'local variable declaration Dim pay As Double pay = hours * wage Console.WriteLine("Total Pay: {0:C}", pay) End Sub Sub Main() 'calling the CalculatePay Sub Procedure CalculatePay(25, 10) CalculatePay(40, 20) CalculatePay(30, 27.5) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 2 3 | Total Pay: $250.00 Total Pay: $800.00 Total Pay: $825.00 |
این مکانیزم پیش فرض برای انتقال پارامترها به یک متد است. در این مکانیزم ، وقتی متدی فراخوانی می شود ، برای هر پارامتر مقدار یک مکان ذخیره جدید ایجاد می شود. مقادیر پارامترهای واقعی در آن ها کپی می شود. بنابراین ، تغییرات ایجاد شده در پارامتر درون متد هیچ تاثیری در آرگومان ندارد.
در VB.Net پارامترهای مرجع را با استفاده از کلید واژه ByVal اعلام می کنند. مثال زیر این مفهوم را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Live Demo Module paramByval Sub swap(ByVal x As Integer, ByVal y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 2 3 4 | Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200 |
این نشان می دهد که هیچ تغییری در مقادیر وجود ندارد اگر چه آن ها در داخل تابع تغییر یافته بودند.
یک پارامتر مرجع ، مرجعی به یک مکان حافظه یک متغیر است. وقتی پارامترها را با استفاده از مرجع انتقال می دهید ، برخلاف پارامترهای مقدار ، مکان ذخیره جدیدی برای این پارامترها ایجاد نمی شود. پارامترهای مرجع همان مکان حافظه را به عنوان پارامترهای واقعی که به متد ارائه می شوند نشان می دهند.
در VB.Net پارامترهای مرجع را با استفاده از کلید واژه ByRef اعلام می کنند. مثال زیر این مسئله را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Module paramByref Sub swap(ByRef x As Integer, ByRef y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 2 3 4 | Before swap, value of a : 100 Before swap, value of b : 200 After swap, value of a : 200 After swap, value of b : 100 |
در این بخش از آموزش VB.Net با مبحث Sub Procedures یا زیر رویه ها در VB.NET آشنا شدیم. در بخش بعد به بررسی کلاس ها و اشیا خواهیم پرداخت.