سیشارپ - باید دانست 3
يكشنبه, ۳ شهریور ۱۳۹۲، ۰۱:۳۰ ق.ظ
null پذیری
باید دانست که:
در سیشارپ تایپ ها به دو دسته کلی تقسیم می شوند
- Value Types: تایپ هایی که مستقیما شامل مقدار هستند، مانند تایپ های پایه ای (int, double, float, decimal)
- Reference Types: تایپ هایی که شامل ارجاع به محلی از حافظه هستند که شامل مقدار مربوطه است مانند کلاس ها
یکی از تفاوت های این دو دسته در امکان null بودن آن ها است. Value Typeها مقدار null را قبول نمی کنند. برای اینکه بتوانیم مقدار null به این دسته از تایپ ها نسبت دهیم (null پذیر کنیم) باید از شئ Nullable استفاده کنیم.
Nullable<int> myint = 10;
myint = null; //No Error!
در یک پروژه که تعداد null پذیر کردن ها زیاد باشد، نوشتن Nullable باعث کاهش خوانایی کد می شود به همین دلیل syntax دیگری برای این کار وجود دارد. کافیست مقابل اسم تایپ از علامت سوال استفاده کنیم:
int? myint = 10;
myint = null; //No Error!
این نکته از این جهت اهمیت دارد که:
هنگامی که از پایگاه داده های رابطه ای استفاده می کنید به دلیل اینکه این گونه پایگاه داده ها برای فیلدهای نوع های پایه مثل int هم null پذیر هستند، هنگامی که داده null از آن ها خوانده می شود اگر متغیر شما null پذیر نباشد برنامه ی شما exception ارسال خواهد کرد و در صورت کنترل نکردن آن، اجرای برنامه متوقف می شود.
البته null پذیری در جاهای مختلفی می تواند کاربرد داشته باشد. مثال بالا به دلیل واضح تر بودن آورده شده است.