دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • مرداد

جلسه ۴۹ : معرفی نوع داده Nullable در #C

  • دسته‌بندی‌ها :
جلسه ۴۹ : معرفی نوع داده Nullable در #C
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه :

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی در رابطه با Anonymous method ها در زبان #C توضیح دادیم و با آن آشنا شدید . در این بخش به معرفی نوع داده Nullable در #C و ویژگی های انواع Nullable توضیح می دهیم.

      همانطور که می دانید، یک نوع داده نمی تواند دارای مقدار Null باشد. به عنوان مثال، int i = null یک خطای زمان کامپایل را برمی گرداند.

      #C در نسخه ۲٫۰ انواع nullable را معرفی می کند که به شما امکان می دهد تا از مقدار Null در مقداردهی متغیر ها استفاده کنید. شما می توانید انواع nullable را با استفاده از دستور <nullable <t که T نوع داده است، اعلام کنید:

      مثال : 

      نوع بالا nullable می تواند شامل محدوده اعداد صحیح مشخص و یا یک مقدار صفر (Null) باشد. برای مثال، <Nullable <int می تواند هر مقدار بین -۲۱۴۷۴۸۳۶۴۸ و ۲۱۴۷۴۸۳۶۴۷ یا یک مقدار صفر را دریافت کند.

      انواع Nullable مواردی هستند که از System.Nullable  استفاده می کنند:

      مثال : 

      یک مقدار nullable از نوع int همان عنصر عادی است به علاوه یک پرچم که می گوید که آیا int دارای مقدار هست یا خیر. که کامپایلر در اینصورت “null” را به عنوان یک مقدار معتبر تلقی می کند.

      مثال : 

      خروجی :

      مثال : 

      اگر به شی مقدار اختصاص داده شده باشد HasValue مقدار true را برمیگرداند؛ اگر مقدار مشخصی برای آن تعیین نشده باشد یا یک مقدار صفر تعیین شده باشد، آن را false می کند.

      دسترسی به مقدار با استفاده از NullableType.value بدون بررسی خالی نبودن آن یک استثناء زمان اجرا را برمیگرداند، به عنوان مثال، استفاده از i.Value یک استثناء را برمی گرداند اگر متغیر i دارای مقدار null باشد:

      مثال : 

      با استفاده از متد GetValueOrDefault میتوان بدون خطا مقدار را بدست آورید:

      مثال : 

      میتوانید بجای دستور <Nullable <int از کد ?int استفاده کنید که دقیقا همان کار را انجام می دهد.

      مثال : 

      برای مقداردهی متغیرهای معمولی (non-nullable) بوسیله متغیر های Nullable از ?? استفاده کنید :

      مثال : 

      خروجی :

      مثال : 

       

      قوانین تخصیص مقدار متغیر Nullable :

      برای تخصیص دادن مقدار یک متغیر Nullable حتما باید آن را مقداردهی کرده باشید ، کامپایلر در اجرای کدهای زیر به خطای “Use of unassigned local variable ‘i'”  برمی خورد:

      مثال : 

      در مثال زیر، یک مقدار nullable از نوع int یک فیلد از کلاس است، بنابراین هیچ خطایی نمی دهد.

      مثال : 

      در هنگام کار با متغیر های nullable درون کلاس ها دقت کنید که آنها درست استفاده شوند زیرا اگر مانند مثال بالا استفاده شوند هیچگونه خطایی دریافت نمی کنید ولی شاید برنامه بدرستی کار نکند.

       

      مقایسه نوع داده Nullable :

      دقت کنید که مقدار Null کمتر از هر مقدار دیگری است. ولی اپراتورهای مقایسه ای در برابر مقدار Null کار نخواهند کرد. مثال زیر را در نظر بگیرید که i کمتر از j، بزرگتر از j و برابر با j نیست.

      مثال : 

      خروجی :

      مثال : 

      برای اینکه کدها بدرستی کار کند و نتیجه مطلوب حاصل گردد باید از کلاس های کمکی کلاس Nullable استفاده کرد. مانند زیر :

      مثال : 

      خروجی :

      مثال : 

       

      ویژگی های انواع Nullable :

      • Nullable ها تنها می توانند بهمراه نوع مقدار (int , string  و …) استفاده شوند.
      • اگر مقدار متغیر null باشد، پراپرتی Value استثناء InvalidOperationException را برمی گرداند. در غير اين صورت خود مقدار را برخواهد گرداند.
      • کلاس Nullable دارای یک پراپرتی دیگر به نام HasValue می باشد که اگر متغیر دارای مقدار باشد (Null نباشد) true و در غیر اینصورت مقدار false را برمی گرداند.
      • شما فقط می توانید از عملگرهای == و =! با یک نوع nullable استفاده کنید. برای مقایسه های دیگر، از کلاس استاتیک Nullable استفاده کنید.
      • استفاده از Nullable های تودرتو مجاز نیست و در استفاده از کد روبه رو به خطا برمی خورید: Nullable<Nullable<int>> i

       

      چند نکته مهم جهت بخاطر سپردن :

      1. نوع Nullable اجازه می دهد تا بتوانیم مقدار Null را به متغیر تخصیص دهیم.
      2. اپراتور ? یک اصطلاح کوتاه برای انواع Nullable است.
      3. از پراپرتی value برای دسترسی مقدار متغیر Nullable استفاده کنید.
      4. از پراپرتی HasValue برای بررسی اینکه آیا مقدار به متغیر نوع nullable اختصاص داده شده یا نه استفاده می کنیم.
      5. کلاس استاتیک Nullable یک کلاس کمکی برای اعمال انواع مقایسه بر روی آنها است.

       

      در این بخش با متغیرهای Nullable آشنا شدید ، در بخش بعدی قصد داریم شما را مفهوم همبستگی (Covariance) آشنا کنیم.

      QR:  جلسه ۴۹ : معرفی نوع داده Nullable در #C
      به اشتراک بگذارید