فراسان

به اشتراک بگذارید برای یادگیری، یاد بگیرید برای به اشتراگ گذاری

عملگر ؟؟ در سی شارپ


یکی از عملگر(=Operator)های جالب سی شارپ که شاید خیلی ها با آن آشنایی ندارند، عملگری است به نام «??» که جهت مشخص کردن یک مقدار پیش فرض برای انواع های داده ای nullable به کار می رود. این عملگر شبیه به دستوارت شرطی عمل می کند، بدین صورت که اگر مقدار سمت چپ آن null باشد، مقدار سمت راست را برمی گراند و در غیر این صورت مقدار سمت چپ را برمی گرداند. فکر می کنم با یک مثال کاملاً متوجه منظورم خواهید شد :

string A = null;
string B = A ?? "DefaultValue";

در مثال بالا متغیری به نام A از نوع string تعریف کردیم و مقدار پیش فرض آن را برابر null قرار دادیم. سپس در خط دوم متغیر دیگری به نام B تعریف کردیم تا کاربرد عملگر ?? را درک کنید. در این خط، متغیر B مقدار رشته ای Default Value را در خود ذخیره خواهد کرد، زیرا سمت چپ آن (که متغیر A است) مقدار null دارد.

البته متغیرهای string قابلیت پذیرش null را دارند و به اصطلاح به آن nullable type می گویند. سودمندی عملگر ?? وقتی معلوم می شود که شما می خواهید مقدار پیش فرض برای انواع non-nullable type مانند int تعریف کنید; وقتی احتمال می دهید که امکان دارد در این گونه متغیرها مقدار null ذخیره شود. شاید شما هم با این مشکل برخورد کرده باشید که برخی مواقع به طور ناخواسته مقدار null به یک متغیر non-nullable مانند int نسبت داده می شود که در این موقعیت یک خطای کامپایلری دریافت خواهید کرد. اگر در این موارد از توابع تبدیل (cast) استفاده کنید یک InvalidOperationException دریافت خواهید نمود که باید آن را handle کنید. البته به راحتی می توانید با یک if ساده این مشکل را حل کنید اما در اینگونه موارد بهترین راه حل استفاده از عملگر ?? خواهد بود. برای در این موضوع به مثال زیر توجه کنید :

int? A = null;
int B = A ?? 0;

توجه داشته باشید، شما به صورت صریح نمی توانید مقدار null به انواع داده ای non-nullable نسبت بدهید، بلکه بایستی مانند مثال بالا، پس از نوشتن data type مورد نظر خود کاراکتر ? را قرار دهید. در خط دوم، ابتدا مقدار A بررسی می شود، اگر برار null بود (در اینجا) مقدار پیش فرض صفر را بر می گرداند، در غیر این صورت مقدار A را بر خواهد گرداند.

عملگر ؟؟ راه بسیار خوبی برای نسبت دادن متغیرهای nullable به متغیرهای non-nullable است.

عملگر ؟؟ در MSDN

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

10 پاسخ به عملگر ؟؟ در سی شارپ

  1. Salar نوامبر 28, 2008 در 4:03 ب.ظ.

    عملگر جالبیه و اکثرا ازش خبر ندارن. ممنون

    این عملگر دقیقا مانند کد زیر عمل می کنه:

    int B = A.HasValue ? A.Value : 0;

  2. ایمان نوامبر 28, 2008 در 4:23 ب.ظ.

    ممنون سالار جان بابت ذکر این نکته. همونطور که گفتم عملگر ؟؟ مانند دستورات شرطی عمل می کنه.

  3. 4news دسامبر 3, 2008 در 8:29 ب.ظ.

    سلام اگه دوست دارید ما رو لینک کنید

    خوشحال میشیم اگه لینک کردید لطفا به ما بگید تا ما هم شما رو لینک کنیم.

  4. Dr.Behrooz دسامبر 5, 2008 در 10:21 ب.ظ.

    سلام دوست عزيز
    تيم ما مايل به تبادل لينك با سايت شما مي باشد.
    اگر شما هم مايل به تبادل لينك با سايت ما هستيد به ما خبر دهيد !
    ايميل ما :
    Takstars@Yahoo.com
    سايت تيم ما :
    http://www.FarsTools.com
    موفق باشيد.

  5. ایمان دسامبر 5, 2008 در 10:47 ب.ظ.

    @ 4news , Dr.Behrooz :خیلی ممنون از لطف شما دوستان. متاسفانه بنده به تبادل لینک اعتقادی ندارم و فقط می تونم با وبلاگ ها و وب سایت هایی که موضوع آن ها با موضوع مطالب وبلاگ فراسان نزدیک تر است تبادل لینک داشته باشم.

    باز هم ممنون از لطف شما
    موفق باشید

  6. Dr.Behrooz دسامبر 5, 2008 در 10:57 ب.ظ.

    ok ممنون
    موفق باشيد دوست عزيز

  7. بازتاب: تفاوت میان HyperLink و LinkButton در ASP.NET « Farasun

  8. علی دسامبر 12, 2008 در 3:19 ب.ظ.

    بسيار جالب بود
    ممنون

  9. بازتاب: Farasun

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

دنبال‌کردن

هر نوشتهٔ تازه‌ای را در نامه‌دان خود دریافت نمایید.

به 37 مشترک دیگر بپیوندید