TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #28 97
⚠️ خطرناک‌ترین کلمه در #C :
همه چیز درباره null


اگه یه جایزه‌ای برای منفورترین و رایج‌ترین خطا تو دنیای دات‌نت وجود داشت، بدون شک به NullReferenceException می‌رسید. این خطا مثل یه روح سرگردانه که هر لحظه ممکنه ظاهر بشه و برنامه‌تون رو از کار بندازه. اما ریشه این کابوس، فقط یه کلمه‌ست: null.

بزن بریم بفهمیم این null چیه و چطور از فاجعه جلوگیری کنیم.

👻 null دقیقاً یعنی چی؟
فکر کنید یه متغیر از نوع Reference Type (مثل یه class)، یه کارت ویزیته که روش آدرس یه خونه نوشته شده.

"null"
یعنی اون کارت ویزیت کاملاً سفیده و هیچ آدرسی روش نیست. پوچه! این رفرنس به هیچ آبجکتی در حافظه اشاره نمی‌کنه.

class Point { public int X, Y; }

// اینجا یه رفرنس به اسم p داریم که به هیچ‌جا اشاره نمی‌کنه
Point p = null;

Console.WriteLine(p == null);
// True


💥 فاجعه کجا رخ میده؟ (NullReferenceException)
حالا اگه شما سعی کنید با اون کارت ویزیت سفید، درِ خونه رو باز کنید (یعنی به یکی از اعضای اون آبجکت مثل X دسترسی پیدا کنید)، برنامه قاطی می‌کنه و با تمام قدرت فریاد می‌زنه: NullReferenceException!

ترجمه این خطا به زبون خودمونی اینه: "داری سعی می‌کنی از چیزی استفاده کنی که اصلاً وجود نداره!"

// این خط فاجعه رو به بار میاره!
// چون p به هیچ آبجکتی اشاره نمی‌کنه، X هم وجود نداره
Console.WriteLine(p.X);

🚫 تکلیف Value Type ها چیه؟
خبر خوب اینه که Value Type ها (مثل int, struct, bool) ذاتاً نمی‌تونن null باشن. اونا همیشه یه مقداری دارن (حتی اگه مقدار پیش‌فرضشون صفر باشه).

Value Type مثل یه سکه هست که یا این روئه یا اون رو؛ حالت "هیچی" نداره.

struct Point { public int X, Y; }

// این کدها اصلاً کامپایل نمیشن! چون Value Type نمی‌تونه null باشه
Point p = null; // Compile-time error
int x = null; // Compile-time error


نکته: البته C# برای شرایط خاص، چیزی به اسم "Nullable Value Types" داره (مثلاً int?) که بعداً بهش می‌رسیم. ولی اصل داستان همینه.


🤔 حرف حساب و تکنیک شما چیه؟
مقابله با null یه مهارت روزمره‌ست. از چک کردن‌های ساده مثل if (myVar != null) گرفته تا تکنیک‌های مدرن‌تر در C#.

استراتژی شما برای جلوگیری از این خطای رو مخ چیه؟ آیا از Null-conditional operator (?.) و Null-coalescing operator (??) زیاد استفاده می‌کنید؟ یا روش خاصی برای مدیریت null تو کدهاتون دارید؟

🔖 هشتگ‌ها :
#CSharp
#ErrorHandling #NullReferenceException
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →