پارامتر اختیاری در سیشارپ
پارامتر اختیاری در سیشارپ برای پارامترهای متد مقدار پیشفرض تعیین میکند تا ارسال همه آرگومانها ضروری نباشد در متدها.
18 مهر 1405
لینک کوتاه
پارامتر اختیاری در سیشارپ
پارامتر اختیاری در زبان برنامهنویسی سیشارپ (#C) یکی از قابلیتهای مهم متدها است که به برنامهنویس اجازه میدهد هنگام فراخوانی یک متد، مقدار بعضی از پارامترها را وارد نکند.در این حالت، اگر مقداری برای پارامتر اختیاری مشخص نشود، برنامه از مقدار پیشفرضی استفاده میکند که هنگام تعریف متد تعیین شده است.
این قابلیت باعث میشود کدها سادهتر، خواناتر و قابل استفاده مجدد باشند.
همچنین در بسیاری از مواقع میتوان با استفاده از پارامترهای اختیاری، از تعریف چندین متد مشابه جلوگیری کرد.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
پارامتر اختیاری چیست؟
در حالت عادی، زمانی که یک متد دارای پارامترهای اجباری باشد، هنگام فراخوانی آن باید مقدار تمام پارامترهای موردنیاز را ارسال کنیم.اما گاهی اوقات ممکن است بخواهیم بعضی از اطلاعات را بهصورت دلخواه دریافت کنیم.
برای مثال، فرض کنید متدی برای نمایش نام یک کاربر طراحی کردهایم.
این متد میتواند علاوه بر نام کاربر، یک عنوان نیز دریافت کند.
اگر عنوان مشخص نشده باشد، برنامه میتواند از یک عنوان پیشفرض استفاده کند.
در چنین شرایطی، پارامتر اختیاری به کمک ما میآید.
نحوه تعریف پارامتر اختیاری در #C
برای تعریف پارامتر اختیاری، کافی است هنگام تعریف پارامتر در متد، علامت مساوی (=) را قرار دهیم و مقدار پیشفرض آن را مشخص کنیم.ساختار کلی به شکل زیر است:
returnType MethodName(type parameter = defaultValue)
{
// دستورات متد
}
در این ساختار، parameter نام پارامتر، type نوع داده و defaultValue مقدار پیشفرض پارامتر است.
برای مثال:
static void ShowMessage(string name = "کاربر")
{
Console.WriteLine("سلام " + name);
}
در این مثال، پارامتر name یک پارامتر اختیاری است و مقدار پیشفرض آن برابر با «کاربر» تعیین شده است.
اگر هنگام فراخوانی متد مقداری ارسال نکنیم، عبارت «کاربر» نمایش داده میشود.
اما اگر نامی ارسال کنیم، همان نام مورد استفاده قرار میگیرد.
مثال ساده از پارامتر اختیاری
کد زیر یک نمونه کامل از استفاده از پارامتر اختیاری در زبان #C است:using System;
class Program
{
static void ShowMessage(string name = "کاربر")
{
Console.WriteLine("سلام " + name);
}
static void Main()
{
ShowMessage();
ShowMessage("علی");
}
}
خروجی برنامه:
سلام کاربر
سلام علی
در فراخوانی اول، هیچ آرگومانی ارسال نشده است؛ بنابراین مقدار پیشفرض استفاده میشود.
در فراخوانی دوم، مقدار «علی» جایگزین مقدار پیشفرض شده است.
تفاوت پارامتر اجباری و اختیاری در سی شارپ
پارامتر اجباری پارامتری است که برای فراخوانی صحیح متد باید مقدار آن ارسال شود.در مقابل، پارامتر اختیاری میتواند بدون ارسال مقدار استفاده شود.
برای درک بهتر، مثال زیر را بررسی کنید:
static void RegisterUser(
string name,
int age = 18)
{
Console.WriteLine(name);
Console.WriteLine(age);
}
در این متد، پارامتر name اجباری و پارامتر age اختیاری است.
فراخوانی صحیح:
RegisterUser("رضا");
RegisterUser("مریم", 25);
خروجی:
رضا
18
مریم
25
در فراخوانی اول، مقدار سن مشخص نشده است و مقدار پیشفرض ۱۸ استفاده میشود.
در فراخوانی دوم، سن ۲۵ به متد ارسال میشود.
نکته مهم این است که پارامترهای اجباری باید پیش از پارامترهای اختیاری قرار بگیرند.
بنابراین تعریف زیر معتبر نیست:
static void RegisterUser(
int age = 18,
string name)
{
}
زیرا پارامتر اجباری name بعد از پارامتر اختیاری قرار گرفته است.
استفاده از چند پارامتر اختیاری در سی شارپ
در سیشارپ میتوان چند پارامتر اختیاری را در یک متد تعریف کرد؛ به شرط آنکه ترتیب پارامترها صحیح باشد.برای مثال:
static void CreateProduct(
string name,
double price = 0,
int quantity = 1)
{
Console.WriteLine("نام محصول: " + name);
Console.WriteLine("قیمت: " + price);
Console.WriteLine("تعداد: " + quantity);
}
در این مثال، نام محصول اجباری است؛ اما قیمت و تعداد دارای مقادیر پیشفرض هستند.
میتوان متد را به شکلهای مختلف فراخوانی کرد:
CreateProduct("موس");
CreateProduct("کیبورد", 500000);
CreateProduct("مانیتور", 8000000, 2);
در فراخوانی اول، قیمت صفر و تعداد یک خواهد بود.
در فراخوانی دوم، قیمت مشخص شده و تعداد برابر با یک باقی میماند.
در فراخوانی سوم، هر سه مقدار به متد ارسال میشوند.
این روش در پروژههایی که با اطلاعات محصولات، کاربران، سفارشها یا تنظیمات سروکار دارند، بسیار کاربردی است.
ارسال آرگومان نامگذاریشده برای پارامتر اختیاری
یکی از امکانات مفید سیشارپ، استفاده از آرگومانهای نامگذاریشده (Named Arguments) است.با کمک این قابلیت، میتوان مقدار یک پارامتر مشخص را بدون ارسال مقادیر تمام پارامترهای اختیاری قبلی تعیین کرد.
به مثال زیر توجه کنید:
static void CreateProduct(
string name,
double price = 0,
int quantity = 1,
bool isActive = true)
{
Console.WriteLine(name);
Console.WriteLine(price);
Console.WriteLine(quantity);
Console.WriteLine(isActive);
}
اکنون میتوانیم فقط مقدار isActive را تغییر دهیم:
CreateProduct("موس", isActive: false);
در این حالت، مقدار price برابر با صفر و مقدار quantity برابر با یک باقی میماند؛ اما isActive برابر با false خواهد بود.این قابلیت باعث میشود نیازی به ارسال مقدار تمام پارامترهای اختیاری نداشته باشیم.
پارامتر اختیاری با مقدار null
در بعضی شرایط، ممکن است بخواهیم مقدار پیشفرض یک پارامتر را null قرار دهیم.این کار زمانی مفید است که مشخص نبودن مقدار، معنای خاصی در برنامه داشته باشد.
برای مثال:
static void ShowUser(string? email = null)
{
if (email == null)
{
Console.WriteLine("ایمیل وارد نشده است.");
}
else
{
Console.WriteLine("ایمیل: " + email);
}
}
فراخوانی متد:
ShowUser();
ShowUser("user@example.com");
در مثال بالا، علامت سؤال پس از string نشان میدهد که متغیر میتواند مقدار null داشته باشد؛ این شیوه در پروژههایی که قابلیت Nullable Reference Types فعال است، کاربرد دارد.
قوانین مهم پارامترهای اختیاری در #C
هنگام استفاده از پارامترهای اختیاری، رعایت چند نکته ضروری است:پارامتر اختیاری باید مقدار پیشفرض داشته باشد.
پارامترهای اجباری باید قبل از پارامترهای اختیاری تعریف شوند.
مقدار پیشفرض باید از نوعی سازگار با نوع پارامتر باشد و از مقادیر مجاز برای پارامترهای اختیاری استفاده کند.
اگر مقدار پارامتر هنگام فراخوانی مشخص شود، همان مقدار بهجای مقدار پیشفرض استفاده میشود.
پارامترهای اختیاری میتوانند تعداد آرگومانهای لازم برای فراخوانی متد را کاهش دهند.
آرگومانهای نامگذاریشده امکان تعیین پارامترهای دلخواه را فراهم میکنند.
در متدهای دارای چند پارامتر اختیاری، ترتیب پارامترها و نحوه فراخوانی باید با قواعد زبان سیشارپ سازگار باشد.
مزایای استفاده از پارامتر اختیاری در سی شارپ
پارامترهای اختیاری مزایای مختلفی دارند.نخست اینکه کد را کوتاهتر میکنند؛ زیرا دیگر نیازی نیست برای حالتهای مختلف، متدهای مشابه متعددی تعریف کنیم.
دوم اینکه خوانایی کد افزایش پیدا میکند و مقادیر پیشفرض در محل تعریف متد بهوضوح مشخص هستند.
همچنین این قابلیت برای توسعه برنامهها مفید است.
برای مثال، میتوان در یک متد جستوجو، پارامترهایی مانند تعداد نتایج، ترتیب نمایش یا فیلترهای اختیاری تعریف کرد تا فراخواننده تنها اطلاعات موردنیاز خود را ارسال کند.
البته استفاده بیش از اندازه از پارامترهای اختیاری همیشه انتخاب مناسبی نیست.
اگر یک متد پارامترهای بسیار زیادی داشته باشد، ممکن است خوانایی آن کاهش یابد.
در چنین شرایطی، استفاده از یک کلاس تنظیمات یا یک شیء برای نگهداری گزینهها میتواند انتخاب بهتری باشد.
تفاوت پارامتر اختیاری با سربارگذاری متد
در سیشارپ، علاوه بر پارامترهای اختیاری، قابلیتی به نام سربارگذاری متد (Method Overloading) وجود دارد.در این روش، میتوان چند متد همنام با امضاهای متفاوت تعریف کرد.
برای مثال:
static void Print(string text)
{
Console.WriteLine(text);
}
static void Print(string text, int count)
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(text);
}
}
در مقابل، با پارامتر اختیاری میتوان بعضی از این حالتها را در یک متد پیادهسازی کرد:
static void Print(string text, int count = 1)
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(text);
}
}
هر دو روش کاربردهای خاص خود را دارند. انتخاب بین آنها به ساختار برنامه، نیازهای پروژه و میزان تفاوت رفتار متدها بستگی دارد.
جمعبندی
پارامتر اختیاری در #C قابلیتی است که اجازه میدهد هنگام تعریف متد، برای برخی پارامترها مقدار پیشفرض مشخص کنیم.در نتیجه، هنگام فراخوانی متد مجبور نیستیم همیشه تمام آرگومانها را ارسال کنیم.
این قابلیت به سادهتر شدن کد، کاهش تکرار، افزایش خوانایی و انعطافپذیری بیشتر متدها کمک میکند.
همچنین ترکیب آن با آرگومانهای نامگذاریشده، امکان ارسال مقادیر دلخواه را فراهم میسازد.
برای استفاده صحیح از پارامترهای اختیاری باید ترتیب پارامترها، نوع دادهها و مقادیر پیشفرض را بهدرستی تعیین کرد.
با درک این مفهوم، میتوان متدهایی کاربردیتر و قابل نگهداریتر در پروژههای سیشارپ طراحی کرد.




کاربران ما
شما هم نظرتون با ما دریاره “پارامتر اختیاری در سیشارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید