
آموزش کار کردن با مقادیر Null در سی شارپ
آموزش کار کردن با مقادیر Null در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی کار کردن با مقادیر Null در سی شارپ است که با نام اصلی Working with Nulls in C# از شرکت Pluralsight منتشر شده است.
مقادیر Null چه هستند؟
همانطور که می دانید در زبان برنامه نویسی سی شارپ انواع داده ای و یا data type ها را به دو دسته value type و reference type تقسیم بندی می کنیم. نوع های داده ای reference type می توانند به صورت یک مقدار null ظاهر بشوند. به عبارت دیگر یک null reference و یا ارجاع تهی به معنی این است که یک متغیر از نوع reference type به هیچ object خاصی اشاره نمی کند و یا به null اشاره میکند. واژه null را در زبان فارسی به تهی ترجمه میکنیم. نکته دیگر اینکه به صورت عادی فقط reference type ها امکان null بودن را دارند؛ اما با قابلیت های سی شارپ می توانیم value type ها را نیز به صورت قابل null بودن و یا اصطلاحاً nullable تعریف کنیم.

استفاده کردن صحیح از مقادیر null در زبان برنامه نویسی بسیار ضروری است؛ چرا که این نوع از مقادیر هم می توانند بسیار مفید و هم بسیار خطرناک باشند. بنابراین به عنوان یک برنامه نویس باید تکنیک ها و مکانیزم های مختلف کار کردن با مقادیر null از جمله الگوی طراحی null object pattern را بشناسید. ضمناً در این رابطه توصیه میکنیم از آموزش الگو های طراحی (Design Pattern) ها در سی شارپ استفاده کنید.
مدیریت Nullable Value Type ها در زبان C#
در C#، انواع مقداری مانند int و bool بهطور معمول نمیتوانند مقدار null را نگهداری کنند. با این حال، Nullable Value Type ها این امکان را فراهم میکنند که یک متغیر مقداری علاوه بر مقادیر معمول نوع خود، وضعیت خالی یا نامشخص را نیز نمایش دهد. این قابلیت در شرایطی کاربرد دارد که وجود یک مقدار قطعی نیست؛ برای مثال، زمانی که داده از یک منبع خارجی دریافت میشود یا یک فیلد در اطلاعات ورودی اختیاری است.
هنگام کار با نوعهایی مانند int? باید به این نکته توجه کرد که متغیر ممکن است مقداری معتبر داشته باشد یا فاقد مقدار باشد. پیش از استفاده از مقدار آن، لازم است وضعیت null به شکل مناسبی بررسی یا مدیریت شود. درک این رفتار به توسعهدهندگان کمک میکند تفاوت میان مقدار پیشفرض یک نوع و نبود مقدار را بهتر تشخیص دهند و از بروز خطاهای ناشی از فرض نادرست درباره دادهها جلوگیری کنند.
روشهای بررسی Null و جلوگیری از خطاهای C#
یکی از مشکلات رایج در برنامههای C#، تلاش برای دسترسی به عضوی از یک شیء است که مقدار آن null است. چنین وضعیتی میتواند به بروز NullReferenceException منجر شود و اجرای بخش موردنظر برنامه را متوقف کند. بررسی مقدار متغیر پیش از دسترسی به اعضای آن، شناخت مسیرهای احتمالی ورود داده و مدیریت درست مقادیر اختیاری، از روشهای مهم برای کاهش این نوع خطاها هستند.
در کدهای واقعی، بررسی null فقط به یک شرط ساده محدود نمیشود؛ گاهی لازم است مشخص شود داده از کجا آمده و آیا وجود آن در منطق برنامه الزامی است یا خیر. استفاده از الگوهای مناسب برای کنترل مقادیر تهی میتواند کد را خواناتر کند و فرضهای پنهان درباره وجود اشیا را کاهش دهد. این رویکرد بهویژه در برنامههایی که با دادههای خارجی یا ساختارهای پیچیده سروکار دارند، به افزایش اطمینان از رفتار صحیح کد کمک میکند.
آشنایی با Non-nullable Reference Types در C# 8
قابلیت Non-nullable Reference Types در C# 8 به توسعهدهندگان امکان میدهد درباره احتمال null بودن متغیرهای مرجع، اطلاعات روشنتری در کد ارائه کنند. با فعال بودن این قابلیت، نوعهای مرجع بدون علامت nullable بهعنوان مقادیری در نظر گرفته میشوند که انتظار میرود null نباشند، در حالی که استفاده از علامت ? نشان میدهد مقدار null نیز میتواند معتبر باشد. کامپایلر بر اساس این اعلانها هشدارهایی ارائه میکند تا برخی خطاهای احتمالی زودتر شناسایی شوند.
این قابلیت به معنای حذف کامل امکان رخ دادن خطاهای مرتبط با null نیست، بلکه ابزاری برای بیان دقیقتر قراردادهای کد و شناسایی برخی وضعیتهای مشکوک در زمان کامپایل است. برای استفاده مؤثر از آن، باید مشخص شود کدام متغیرها الزاماً مقدار دارند و کدام متغیرها میتوانند خالی باشند. این تفکیک به خوانایی کد، مستندسازی بهتر انتظارهای برنامه و تشخیص زودتر مشکلات احتمالی کمک میکند.
مدیریت مقادیر Null در طراحی نرمافزارهای قابلاعتماد
مقدار null در بسیاری از برنامهها نشاندهنده نبود داده، نامشخص بودن یک نتیجه یا اختیاری بودن یک فیلد است. با این حال، اگر معنای آن در بخشهای مختلف برنامه بهدرستی مشخص نشود، ممکن است شرطهای متعدد و خطاهای زمان اجرا به وجود بیایند. طراحی مناسب مستلزم آن است که رفتار برنامه در مواجهه با مقدار ناموجود روشن باشد و مشخص شود آیا باید مقدار جایگزین در نظر گرفته شود، خطا گزارش شود یا اجرای عملیات ادامه پیدا کند.
برای مدیریت بهتر null، لازم است قراردادهای متدها، نوع پارامترها و مقادیر بازگشتی با دقت طراحی شوند. اگر یک متد انتظار دارد ورودی همیشه مقدار داشته باشد، این انتظار باید به شکل مناسبی در طراحی و پیادهسازی منعکس شود. در مقابل، اگر نبود مقدار بخشی طبیعی از رفتار برنامه است، کد باید آن را بهطور صریح مدیریت کند. رعایت این اصول به کاهش ابهام، سادهتر شدن نگهداری کد و افزایش قابلیت پیشبینی رفتار برنامههای C# کمک میکند.
سرفصل مطالب آموزش ویدئویی کار کردن با مقادیر Null در سی شارپ
فصل اول: مقدمه دوره آموزشی
- مقدمه
فصل دوم: کار کردن با Nullable Value Type ها و String
- مقدمه
- بررسی سرفصل دوره آموزشی
- بررسی کلی Reference Type ها و Value Type ها
- استفاده کردن از Magic Number ها برای Null Value Type ها
- معرفی کردن Nullable Value Type ها با استفاده از کلاس جنریک Nullable
- ریفکتور کردن و استفاده از کلاس Nullable و حذف کردن Magic Number ها
- روش کوتاه نویسی و استفاده از Nullable Value Type ها در سی شارپ
- معرفی Nullable Boolean Value ها
- بررسی String های Null و Empty
- چک کردن String های Null و Empty
- جمع بندی
فصل سوم: دسترسی پیدا کردن و چک کردن Null Value ها
- مقدمه
- بررسی دقیق تر کلاس جنریک Nullable
- استفاده کردن از پروپرتی های HasValue و Value
- استفاده از متد GetValueOrDefault
- مقایسه کردن Object های مختلف کلاس جنریک Nullable
- بررسی Conversion های Implicit و Explicit
- بررسی عملگرهای Null-checking در سی شارپ
- استفاده کردن از Conditional Operator برای چک کردن مقادیر Null
- استفاده کردن از عملگر Null-coalescing
- استفاده کردن از عملگر Null-conditional
- استفاده کردن از عملگر Null-conditional به همراه مقادیر یک آرایه Null
- انجام Invocation برای Delegate های Null
- جمع بندی
فصل چهارم: حذف کردن Null Reference Exception ها
- مقدمه
- مقدمه ای بر الگوی Null Object Pattern
- بررسی عملی الگوی Null Object Pattern
- مثالی از عدم استفاده کردن از Null Object Pattern
- پیاده سازی الگوی Null Object Pattern با استفاده از Interface ها
- ریفکتور کردن و استفاده کردن از یک Base Class و Single Null Instance
- نکات ضروری
- جمع بندی
فصل پنجم: بررسی Non-nullable Reference Type ها در سی شارپ 8
- مقدمه
- بررسی قابلیت های مربوط به مقادیر Null در سی شارپ 8
- ایجاد کردن یک پروژه جدید در .NET Core 3
- نوشتن کدهای Null ساده
- فعال کردن Non-nullable Reference Type ها در خطوط خاصی از کد
- فعال کردن Non-nullable Reference Type ها برای یک فایل کامل
- فعال کردن Non-nullable Reference Type ها برای یک پروژه کامل
- تنظیم کردن Warning های مربوط به مقادیر Null به عنوان Error
- مشخص کردن اینکه یک Reference می تواند Null باشد
- کار کردن با پروپرتی های Nullable و غیر Nullable
- کار کردن با Return Value های مربوط به متدهای Nullable و غیر Nullable
- استفاده کردن از عملگرهای Null-coalescing و Null-conditional
- استفاده کردن از عملگر Null-forgiving برای Override کردن کامپایلر
- ریفکتور کردن کدهای موجود و استفاده از قابلیت های سی شارپ 8
- بررسی کلاس ها و متدهای جنریک Nullable و غیر Nullable
- نکات ضروری و مهم
- جمع بندی







