در قسمت های قبلی، با متد Main که نقطه شروع برنامه های سی شارپ می باشد آشنا شدیم. در زبان سی شارپ ما می توانیم متدهای مورد نظر خودمان را ایجاد کنیم. زمان تعریف متدها به این نکته باید توجه داشت که هر متد باید یک وظیفه خاص را انجام دهد. در قسمت زیر با شیوه نوشتن متدها آشنا می شویم:
در قسمت زیر ما یک متد ساده که یک پیام خوش آمدگویی را در پنجره کنسول نمایش می دهد تعریف می کنیم. این متد مقدار بازگشتی نداشته و پارامتری نیز به عنوان ورودی نمیگیرد:
در نمونه کد بالا، متدی با نام DisplayMessage تعریف کردیم که داخل آن پیغامی بر روی صفحه کنسول نمایش داده می شود. در داخل متد Main هم متد DisplayMessage را فراخوانی کردیم. دقت کنید که برای فراخوانی متد باید پس از نام متد حتماً () را قرا دهیم. در این متد به دلیل اینکه ما پارامتری برای متد تعریف نکردیم داخل پرانتز هیچ چیز نمی نویسیم، اما اگر پارامتری تعریف شده بود، داخل پرانتز باید مقادیر هر پارامتر را مشخص می کردیم که در قسمت بعدی شیوه تعریف پارامترها را با هم بررسی می کنیم.
همانطور که در قسمت قبلی گفتیم، می توان برای هر متد یک یا چند پارامتر ورودی مشخص کرد و سپس داخل بدنه متد از پارامترها استفاده کرد. برای تعریف پارامترها، زمانی که نام متد را مشخص می کنیم داخل پرانتز باید لیست پارامترها را بنویسیم. این لیست بوسیله علامت , جدا شده و هر پارامتر شامل نوع پارامتر که می تواند یکی از انواع داده های اولیه یا کلاس های نوشته شده باشد و سپس نام پارامتر. برای آشنایی بیشتر به مثال زیر توجه کنید:
در نمونه کد بالا، متدی تعریف کردیم با نام DisplayMessage که دو پارامتر از نوع string با نام های firstName و lastName به عنوان ورودی دریافت می کند. سپس داخل بدنه متد، پیغامی حاوی نام و نام خانوداگی که به عنوان پارامتر پاس داده شده است را در خروجی نمایش می دهیم.
برای فراخوانی متد، در متد Main داخل پرانتز پس از نام متد باید لیست مقادیر مورد نظر برای هر پارامتر را بنویسیم. دقت کنید که ترتیب نوشتن مقادیر برای پارامترها با لیست تعریف پارامترها باید یکسان باشد. همچنین باید تعداد مقادیر ورودی هنگام فراخوانی متد با تعداد پارامترهای مشخص شده برای آن یکسان باشد. در غیر اینصورت با پیغام خطا مواجه خواهید شد. البته راهیی وجود دارد که از نوشتن مقادیر برای برخی پارامترها خودداری کرد و آن استفاده از مقادیر پیش فرض برای پارامترها می باشد.
زمانی که قصد تعریف کردن متدی را داریم، می توانیم برای پارامترهای آن متد مقادیر اولیه ای را مشخص کنیم. برای آشنایی بیشتر به مثال زیر توجه کنید:
در مثال بالا، هنگام تعریف متد DisplayMessage برای پارامتر lastName مقدار پیش فرض Ahmadi را مشخص کردیم. با این کار می توانیم از نوشتن مقدار پارامتر lastName هنگام فراخوانی متد خودداری کنیم. در حقیقت نوشتن مقدار برای این پارامتر دلخواه بوده و در صورت نوشته نشدن مقدار پیش فرض جایگزین خواهد شد. دقت کنید که زمان مشخص کردن مقادیر پیش فرض، تنها انتهایی ترین پارامترها می توانند مقدار پیش فرض داشته باشند، در غیر اینصورت پیغام خطا دریافت خواهد کرد. به عنوان مثال:
کد بالا صحیح نمی باشد، زیرا علاوه بر پارامتر b باید پارامتر c نیز مقدار اولیه داشته باشد تا پیغام خطا دریافت نکنیم.
هنگامی که متدی با چندین پارامتر تعریف میکنیم، می توان مقدار دهی پارامترها را بر اساس نام پارامتر انجام داد. متد زیر را در نظر بگیرید:
برای مقدار دهی پارامترها بر اساس نام هنگام فراخوانی به روش زیر عمل می کنیم:
همانطور که ملاحظه می کنید، زمانی که از نام پارامتر برای مقدار دهی آن استفاده می کنید، ترتیب نوشتن دیگر مهم نیست.
یکی از موارد استفاده از متدها، گرفتن خروجی از یک متد است. یعنی متد بعد از انجام یکسری کارها یک خروجی برای ما بر میگرداند. برای استفاده از مقادیر خروجی، باید ابتدا نوع خروجی متد را هنگام تعریف آن مشخص کرد. تا این لحظه متدهایی که نوشتیم مقادیر بازگشتی آنها از نوع void بود، یعنی مقدار بازگشتی نداشتند. اما فرض کنید می خواهیم متدی بنویسیم که دو عدد را به عنوان ورودی دریافت کرده و به عنوان خروجی حاصل جمع آنها را برگرداند. برای اینکار نیاز به یک مقدار خروجی داریم. به مثال زیر توجه کنید:
به تعریف بالا دقت کنید، به جای کلمه void از نوع int استفاده کردیم که نشان دهنده نوع بازگشتی متد ما می باشد. اما نکته دیگری نیز وجود دارد که باید به آن توجه کنیم. زمانی که متد ما مقدار بازگشتی دارد، باید جایی داخل بدنه متد، مقداری را با کلمه کلید return بازگردانیم. این مقدار به عنوان خروجی متد در نظر گرفته خواهد شد. در صورتی که متد ما مقدار بازگشتی داشته و جایی از return استفاده نکنیم با پیغام خطا مواجه خواهیم شد. برای فراخوانی متد Sum و استفاده از نتیجه بازگشتی آن به صورت زیر عمل می کنیم:
کد بالا، در خروجی مقدار 6 که حاصل جمع 4 و 2 می باشد را چاپ خواهد کرد.
برای آشنایی بیشتر با مقادیر بازگشتی، مثال دیگری را با هم بررسی می کنیم. در این مثال متدی خواهیم نوشت که حقوق و درصد مالیات را به عنوان ورودی دریافت کرده و مقدار مالیات را بر می گرداند:
و سپس می توانیم به صورت زیر کد بالا را فراخوانی کنیم:
تا این جای کار با مقدمات تعریف متدها، پارامترها و مقادیر بازگشتی متدها آشنا شدیم. در بخش دوم از قسمت دهم سری آموزشی سی شارپ با کلمات کلیدی out و ref، مفهوم method overloading و توابع بازگشتی آشنا خواهیم شدیم. ITPRO باشید
در قسمت قبلی ها را یاد گرفتیم. در این پست با نحوه Override کردن متدها آشنا خواهیم شد. می توان در یک کلاس مشتق شده متدهای به ارث برده شده از کلاس پایه را مجدداً و بصورت تخصصی بازنویسی کرد. در این صورت با فراخوانی متد توسط شی از کلاس مشتق شده ، متد تخصصی کلاس مشتق شده فراخوانی می شود نه متد ارائه شده توسط کلاس پایه .
برچسب:
نویسنده: مریم اسدیان