C#-application-سی شارپ-کاربردهادوره رایگان-الگوریتم اول-free-آموزش کامل

لطفا صبر کنید...

کلاس‌های Nullable و نوع داده Nullable در #C

در #C، نوع داده‌های Nullable به شما این امکان را می‌دهند که برای انواع داده‌ای که معمولاً نمی‌توانند مقدار null را ذخیره کنند (مانند انواع عددی و منطقی)، مقدار null را نیز در نظر بگیرید. این ویژگی مفید است به خصوص در مواقعی که می‌خواهید یک نوع داده را به‌طور خاص از مقدار null متمایز کنید (برای مثال در پایگاه‌های داده که ممکن است برخی از فیلدها خالی باشند).

1. نوع داده Nullable در #C

در #C، تمام انواع داده‌ی اولیه (مثل int, double, bool و غیره) نمی‌توانند مقدار null را نگه دارند. اما می‌توانیم به کمک علامت ?، این امکان را فراهم کنیم که این انواع نیز بتوانند مقدار null را ذخیره کنند.

ساختار نوع داده Nullable

برای اینکه یک نوع داده را nullable کنید، کافی است از علامت ? بعد از نوع داده استفاده کنید.

int? x = null;  // int معمولاً نمی‌تواند null باشد، اما با استفاده از ? می‌تواند null شود
double? y = 3.14;  // double نوعی دیگر از داده است که می‌تواند null باشد
bool? isActive = null;  // boolean نوعی است که می‌تواند null باشد

مثال استفاده از نوع داده Nullable

using System;

class Program
{
    static void Main()
    {
        // تعریف متغیرهای nullable
        int? age = null;  // مقدار null برای age
        double? price = 100.5;  // مقدار عددی
        bool? isAvailable = null;  // مقدار null برای isAvailable

        // چک کردن اینکه آیا مقدار null است
        if (age.HasValue)
        {
            Console.WriteLine("Age: " + age.Value);  // اگر مقدار داشت، آن را نمایش می‌دهیم
        }
        else
        {
            Console.WriteLine("Age is null.");
        }

        // استفاده از مقدار nullable
        Console.WriteLine("Price: " + price ?? 0);  // اگر price null باشد، 0 نمایش داده می‌شود
    }
}

خروجی:

Age is null.
Price: 100.5

ویژگی‌های Nullable

  • HasValue: مشخص می‌کند که آیا متغیر null است یا خیر.
  • Value: به شما این امکان را می‌دهد که مقدار واقعی متغیر را به دست آورید (فقط زمانی که HasValue برابر با true باشد).

عملیات‌های رایج با Nullable

  • Null-Coalescing Operator (??): این عملگر به شما این امکان را می‌دهد که اگر مقدار nullable برابر با null باشد، یک مقدار پیش‌فرض اختصاص دهید.

    int? a = null;
    int b = a ?? 10;  // اگر a برابر null باشد، b برابر 10 می‌شود

2. کلاس‌های Nullable در #C

در #C، Nullable<T> یک ساختار (struct) است که توسط خود زبان #C فراهم می‌شود و به شما این امکان را می‌دهد که یک نوع داده عمومی (generic type) را nullable کنید. از آنجا که T در Nullable<T> یک نوع داده جنریک است، می‌توانید هر نوع داده‌ای را nullable کنید.

ساختار Nullable

در واقع، وقتی از int? یا double? استفاده می‌کنید، این همان <Nullable<int و <Nullable<double است. بنابراین، int? و <Nullable<int به طور یکسان رفتار می‌کنند.

using System;

class Program
{
    static void Main()
    {
        // استفاده از Nullable<T> برای عدد صحیح
        Nullable<int> x = null;  // این معادل با int? است
        Nullable<int> y = 5;

        // بررسی اینکه آیا مقدار null است
        if (x.HasValue)
        {
            Console.WriteLine("x has value: " + x.Value);
        }
        else
        {
            Console.WriteLine("x is null");
        }

        // دسترسی به مقدار
        Console.WriteLine("y value: " + y.Value);
    }
}

خروجی:

x is null
y value: 5

3. مزایای استفاده از Nullable و Nullable

  1. انعطاف‌پذیری بیشتر: برای نگه‌داری مقادیر عددی که ممکن است گاهی null باشند (مثل داده‌هایی که از پایگاه‌های داده گرفته می‌شوند)، می‌توانید از نوع داده‌های nullable استفاده کنید.
  2. مناسب برای داده‌های Missing یا Unknown: زمانی که یک مقدار برای یک فیلد یا ویژگی ناشناخته یا گم شده است، می‌توانید از null برای نمایش آن استفاده کنید.
  3. امنیت نوع: با استفاده از Nullable<T>، می‌توانید به راحتی بررسی کنید که آیا مقدار داده شده موجود است یا خیر (با استفاده از HasValue).

4. تفاوت بین نوع داده Nullable و نوع داده معمولی

  • نوع داده معمولی: نمی‌تواند null باشد. برای مثال، int نمی‌تواند مقداری به جز یک عدد صحیح (مانند 5 یا 0) داشته باشد.
  • نوع داده Nullable: می‌تواند یا یک مقدار از نوع خود را داشته باشد، یا null باشد. برای مثال، int? می‌تواند مقداری مانند 5 یا null داشته باشد.

5. تبدیل نوع و Nullable

در صورتی که مقدار nullable برابر null باشد، ممکن است نتوانید آن را به نوع دیگر تبدیل کنید. بنابراین، باید با دقت مقدارهای nullable را مدیریت کنید.

مثال تبدیل Nullable به نوع معمولی

اگر می‌خواهید یک مقدار nullable را به نوع معمولی تبدیل کنید، می‌توانید از ()GetValueOrDefault استفاده کنید:

int? nullableInt = null;
int result = nullableInt.GetValueOrDefault();  // اگر null باشد، مقدار پیش‌فرض 0 برمی‌گردد
Console.WriteLine(result);  // خروجی: 0

جمع‌بندی

  • نوع داده Nullable در #C به شما این امکان را می‌دهد که برای انواع داده‌هایی مانند int، double و bool که معمولاً نمی‌توانند null باشند، مقدار null را ذخیره کنید.
  • <Nullable<T یک ساختار جنریک است که به شما این امکان را می‌دهد تا انواع مختلف داده‌ها را nullable کنید.
  • برای کار با مقادیر nullable، از ویژگی‌هایی مانند HasValue و Value استفاده می‌کنید تا مطمئن شوید که مقدار واقعی موجود است.