هر متغیر با چه مقداری متولد میشود؟
تو پست "سیاست تخصیص قطعی" دیدیم که فیلدهای یک کلاس و عناصر یک آرایه به صورت خودکار مقداردهی اولیه میشن. اما سوال اینجاست: چه مقداری؟ این مقادیر از کجا میان؟
جواب تو یه مفهوم ساده به اسم مقدار پیشفرض (Default Value) هست.
مقادیر پیشفرض چیست؟ 🔢
هر نوع دادهای در #C یک مقدار پیشفرض داره که حاصل صفر کردن بیتهای حافظه (Bitwise Zeroing) هست. این یعنی:
●تمام Reference Typeها (کلاس، string، آرایه، ...): مقدار پیشفرضشون null هست.
●تمام Numeric Typeها (int, double, decimal, ...): مقدار پیشفرضشون 0 هست.
●نوع bool: مقدار پیشفرصش false هست.
●نوع char: مقدار پیشفرصش '\0' (کاراکتر نال) هست.
کلمه کلیدی default ✨
سیشارپ یه کلمه کلیدی شیک و کاربردی به اسم default در اختیار ما میذاره تا بتونیم مقدار پیشفرض هر نوعی رو به راحتی بدست بیاریم، بدون اینکه نیازی به حفظ کردنشون داشته باشیم.
// گرفتن مقدار پیشفرض decimal
decimal d1 = default(decimal); // حاصل: 0
// روش مدرنتر و خلاصهتر
// کامپایلر خودش نوع رو از متغیر تشخیص میده
int i = default; // حاصل: 0
bool b = default; // حاصل: false
string s = default; // حاصل: null
تکلیف structها چیست؟ 🏗
مقدار پیشفرض برای یک struct سفارشی، خیلی سادهست: معادل مقدار پیشفرض تمام فیلدهای داخل اون struct هست.
public struct Point
{
public int X; // پیشفرض: 0
public string Name; // پیشفرض: null
}
Point p = default;
// اینجا p.X برابر 0 و p.Name برابر null خواهد بود
Console.WriteLine($"X: {p.X}, Name: {p.Name ?? "null"}");
🤔 حرف حساب و تجربه شما
دونستن مقادیر پیشفرض به شما کمک میکنه رفتار اولیه کدهاتون رو بهتر درک کنید و از خطاهای ناشی از مقادیر ناخواسته جلوگیری کنید.
آیا تا حالا از کلمه کلیدی default تو کدهاتون استفاده کردید؟ یا جایی بوده که مقداردهی پیشفرض یه فیلد یا آرایه شما رو غافلگیر کرده باشه؟
نظراتتون رو کامنت کنید! 👇
[پاتوق گیک های #C]
🔖 هشتگها :
#CSharp
#CodingTips
#SoftwareEngineering