داده های تهی پذیر

آموزش انواع داده های تهی پذیر (Nullable) در سی شارپ

اساطیر زبان

Null در واقع به معنای پوچ و تهی می باشد – متغیری است که مقدار ندارد. در این قسمت از آموزش مان؛ ممکن است با داده هایی روبه رو شده باشید که مقداردهی اولیه نشدند. شما همچنین می دانید که باید همیشه قبل از دسترسی به یک متغیر؛ باید از این موضوع اطمینان حاصل کنید که آن متغیر، مقداری دارد. در غیر این صورت؛ احتمالاً با یک NullReferenceException مواجه خواهید شد.

این داده های Null مشخصاً زمانی که با اشیاء و رشته های خودتان کار می کنید؛ حائز اهمیت می باشد. از سوی دیگر؛ زمانی که با اعدادی مانند اعداد صحیح کار می کنید؛ خواهید دید که این داده ها همیشه یک مقدار (پیش فرض) دارند. برای یک عدد صحیح مقدار ذخیره/ پیشفرض ۰ (صفر) می باشد؛ که هرگز نباید با NULL اشتباه گرفته شود – آنها اصلاً شبیه هم نیستند؛ حتی اگر برخی از زبان های برنامه نویسی تایپ شده غیر استاتیک با آنها یکسان رفتار کنند- زیرا ۰ یک عدد است و Null چیزی نیست.

بنابراین؛ بنابراین اگر در شرایطی قرار گرفته اید که می خواهید یک عددی را تعریف کنید که نشان دهنده ی یک مقدار NULL / تعریف نشده باشد؛ ممکن است ندانید که باید چه کار کنید؛ زیرا شما نمی توانید مقدار null را به یک متغیر عدد صحیح تخصیص دهید. مگر این که عدد صحیح به صورت تهی پذیر (nullable) تعریف شده باشد – یک ساختار ویژه زبان برنامه نویسی که برای موقعیت هایی مشابه این ساخته شده است. در اینجا مثالی برای توضیح این تفاوت آورده شده است:

int notNullable = null; // Will cause an error from the compiler

int? nullable = null; // Just fine – it’s nullable!

این نوع کد نویسی برای به اصطلاح انواع مقادیر مانند اعداد صحیح، اعداد ممیزی شناور، متغیرهای بولین و ساختارها مجاز است. رشته ها و اشیاء از سوی دیگر انواع مرجع هستند و نمی توان آنها را به صورت تهی پذیر تعریف کرد؛ زیرا آنها به صورت پیش فرض خود nullable هستند.

بررسی یک تهی پذیری برای null

بنابراین؛ اکنون که شما یک متغیری تعریف کرده اید که می تواند null باشد؛ بررسی اینکه آیا این مورد کاملاً تهی می باشد یا خیر، مهم است. شما می توانید این کار را از دو طریق انجام دهید: کافی است متغیر را با انواع دیگر کلید واژه هایnull مقایسه کنید، یا از ویژگی HasValue استفاده کنید که یک شیء null از سیستم System.Nullable به ارث می برد. به مثال زیر توجه کنید:

int? nullable = null;
if (nullable == null)
Console.WriteLine(“It’s a null!”);
if (!nullable.HasValue)
Console.WriteLine(“It’s a null!”);

نتیجه مشابه است؛ بنابراین هرکدام از این متدها که برای تان ساده تر و قابل درک تر است را مورد استفاده قرار دهید. از آنجایی که مقدار ما اکنون می تواند تهی باشد؛ شما باید همیشه قبل از استفاده از آن؛ این مورد را بررسی کنید؛ در غیر این صورت ممکن است با خطا در برنامه نویسی مواجه شوید.

استفاده از مقدار یک nullable

یک شیء تهی پذیر از System.Nullable ، ویژگی Value را نیز به ارث می برد. این امر می تواند برای باز به دست آوردن مقدار حقیقی شیء تهی پذیر استفاده شود. با این حال، برای عملیاتی که یک مقایسه ساده را انجام دهد؛ برای مثال استفاده از اپراتورهای == و !=؛ سی شارپ به شما اجازه می دهد ویژگی Value را حذف کنید و مستقیماً شیء تهی پذیر را مقایسه نمایید. به عبارت دیگر؛ هردو این مثال ها؛ همان کار را انجام می دهد:

int? nullable = 42;

if (nullable.Value == 42)
Console.WriteLine(“It’s 42!”);

if (nullable == 42)
Console.WriteLine(“It’s 42!”);

اشیاء Nullable همیشه از انواع داده های پایه مانند اعداد صحیح می آید؛ همان طور که در مثال قبلی آمد. در حالی که این نوع داده ها ممکن است یک مقدار پیش فرض داشته باشد؛ مقدار پیشفرض تهی پذیر؛ همیشه تهی است. به این دلیل است که همان طور که پیشتر گفتیم؛ شما باید قبل از این که سعی کنید که از یک مقدار استفاده کنید؛ مرجع تهی بودن آن را بررسی کنید. با این حال، یک نوع nullable ؛ متد کمک کننده بسیار جالبی را به ارث می برد که شما می توانید استفاده کنید: ()GetValueOrDefault. این متد؛ مقدار شیء nullable را باز می گرداند؛ مگر این که مقدار آن تهی باشد؛ در این حالت مقدار پیش فرض نوع واقعی را برمی گرداند. بنابراین، برای یک عدد صحیح Nullable، ۰ را برمی گرداند ، برای یک متغیر بولین nullable، عبارت false باز می گردد و غیره. این به شما امکان می دهد تا هم چک کردن و هم بازیابی مقدار را طی بیان یک عبارت واحد انجام دهید:

if ((nullable.HasValue) && (nullable.Value == 42))
Console.WriteLine(“It’s 42!”);

if(nullable.GetValueOrDefault() == 42)
Console.WriteLine(“It’s 42!”);

همان طور که مشاهده می کنید؛ مثال دوم در مورد بالا؛ کوتاه تر و خواندن آن ساده تر است؛ در حالی که هر دو مثال یک کار مشابه را انجام می دهند.

خلاصه

انواع مقادیر در سی شارپ، مانند اعداد صحیح و متغیرهای بولین؛ همه یک مقدار پیشفرض دارند. اگر می خواهید با این داده ها کار کنید ، به عنوان مثال از آنجا که باید بین ۰ و null تفاوت قائل شوید، یا به این دلیل که باید بدانید کاربر خودش فعالانه “false” را برای چیزی انتخاب کرده است یا این که متغیر فقط مقدار پیش فرض false را در خود نگه داشته است، می توانید متغیر را با اضافه کردن یک ? (علامت سؤال) به عنوان پسوند؛ به صورت تهی پذیر درآورید.

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست