نمایش نتایج 1 تا 4 از 4

نام تاپیک: Null-conditional operators - Conditional operator

  1. #1

    Null-conditional operators - Conditional operator

    سلام
    دوستان چه در سایت ایرانی و چه خارجی راستش من نمیفهمم
    این
    ?.
    چجور عمل میکنه
    C#‎ 6 - Null-conditional operators


  2. #2
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: Null-conditional operators

    هدف از Null-Conditional Operator کاهش کدنویسی حالات مقایسه ای مختلف با null هست .
    مثال زیر را در نظر داشته باش

    public static string Truncate(string value, int length)
    {
    string result = value;
    if (value != null) // Skip empty string check for elucidation
    {
    result = value.Substring(0, Math.Min(value.Length, length));
    }
    return result;
    }

    درون متد، شرط null نبودن را بررسی کرده درصورتی که متغییر value مخالف null باشه متد Substring آن فراخوانی میشود.(اگر null باشد با خطا مواجه خواهد شد).در صورتی بخواهیم همان عملکرد کد را بصورت ساده تر نوشته شود کد بالا را بصورت زیر ساده تر بتویسیم

    public static string Truncate(string value, int length)
    {
    return value?.Substring(0, Math.Min(value.Length, length));
    }

    در متد اصلاح شده همان عملکرد اما بصورت ساده تر نوشته میشود.در صورتی value نال باشد ،مقدار null برگشت داده میشود و در صورت null نبودن متدSubstring آن فراخوانی میشود و مقدار برگشتی متد را بازگشت خواهد کرد.

    در مثالی دیگر چند حالت چک کردن null باهم در if چک میشود

    var response = someProxy.SomeWebMethod();
    // so many layers, so many potential nulls...
    if (response != null && response.Results != null && response.Results.Status == Status.Success)
    {
    Console.WriteLine("We were successful!");
    }

    اگر آبجکت response مخالف null و ابجکت داخلی آن Results مخالف null باشد انگاه پراپرتی Status ان بررسی میشود که بصورت Null-Conditional Operator نوشته شود

    var response = someProxy.SomeWebMethod();
    // so much better!
    if (response?.Results?.Status == Status.Success)
    {
    Console.WriteLine("We were successful!");
    }
    آخرین ویرایش به وسیله ژیار رحیمی : شنبه 11 آذر 1396 در 20:14 عصر
    First,solve the problem then write the code

  3. #3
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: Null-conditional operators

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    هدف از Null-Conditional Operator کاهش کدنویسی حالات مقایسه ای مختلف با null هست .
    مثال زیر را در نظر داشته باش

    public static string Truncate(string value, int length)
    {
    string result = value;
    if (value != null) // Skip empty string check for elucidation
    {
    result = value.Substring(0, Math.Min(value.Length, length));
    }
    return result;
    }

    درون متد، شرط null نبودن را بررسی کرده درصورتی که متغییر value مخالف null باشه متد Substring آن فراخوانی میشود.(اگر null باشد با خطا مواجه خواهد شد).در صورتی بخواهیم همان عملکرد کد را بصورت ساده تر نوشته شود کد بالا را بصورت زیر ساده تر بتویسیم

    public static string Truncate(string value, int length)
    {
    return value?.Substring(0, Math.Min(value.Length, length));
    }

    در متد اصلاح شده همان عملکرد اما بصورت ساده تر نوشته میشود.در صورتی value نال باشد ،مقدار null برگشت داده میشود و در صورت null نبودن متدSubstring آن فراخوانی میشود و مقدار برگشتی متد را بازگشت خواهد کرد.

    در مثالی دیگر چند حالت چک کردن null باهم در if چک میشود

    var response = someProxy.SomeWebMethod();
    // so many layers, so many potential nulls...
    if (response != null && response.Results != null && response.Results.Status == Status.Success)
    {
    Console.WriteLine("We were successful!");
    }

    اگر آبجکت response مخالف null و ابجکت داخلی آن Results مخالف null باشد انگاه پراپرتی Status ان بررسی میشود که بصورت Null-Conditional Operator نوشته شود

    var response = someProxy.SomeWebMethod();
    // so much better!
    if (response?.Results?.Status == Status.Success)
    {
    Console.WriteLine("We were successful!");
    }

    ممنون میشم ای خط رو هم برا من توضیح بدید
    i < names.Length ? string.Empty : ' ' + (i / names.Length + 1).ToString()

  4. #4
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: Null-conditional operators

    Conditional operator (:?) عمگری شرطی ست که بجای if-elseبکار میرود.به دو حالت 1-مقایسه و انتساب 2-مقایسه و فراخوانی کاربرد دارد

    //1-if-else for assignment a value
    var result = Boolean conditional expression ? first statement : second statement
    //2-if-else for calling methods
    Boolean conditional expression ? first Method : second Method

    در حالت اول :اگر نتیجه عبارت شرط(conditional expression) درست یا true باشد نتیجه بخش first ststment در result ریخته میشود و در صورت false بودن نتیجه second statmet .
    در حالت دوم :اگر نتیجه عبارت شرط(conditional expression) درست یا true باشد first method فراخوانی و در صورت false بودن second method فراخوانی میشود.
    مثال زیر را در نظر بگیر

    int input = Convert.ToInt32(Console.ReadLine());
    string classify;


    // if-else construction.
    if (input > 0)
    classify = "positive";
    else
    classify = "negative";

    یک عبارت if-else درصورتی مقدار input بزرگتر از صفر باشد رشته positive به متغییر classifiy انتساب داده میشود و در غیر اینصورت رشته negative به آن انتساب ذاذه میشود.
    در صورتیکه عبارت بالا بصورت conditional oprator نوشته شود

    classify = (input > 0) ? "positive" : "negative";

    اما در مورد سوال شما :
    نوع مقایسه ایی از نوع اول میباشد که باید نتیجه conditional oprator به متغییری انتساب داده شود.

    var result=i < names.Length ? string.Empty : ' ' + (i / names.Length + 1).ToString();


    //که ساده شده عبارت زیر میباشد
    string result;
    if(i<names.Lenght)
    result=string.Empty;
    else result=' ' + (i / names.Length + 1).ToString();
    First,solve the problem then write the code

تاپیک های مشابه

  1. The C#‎ ?? null coalescing operator (and using it with LINQ)
    نوشته شده توسط dot_net_lover2 در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: دوشنبه 09 مهر 1386, 11:25 صبح
  2. خطای Operation in not allowed the object is closed
    نوشته شده توسط shsoft در بخش VB.NET
    پاسخ: 1
    آخرین پست: پنج شنبه 04 دی 1382, 10:29 صبح
  3. Overriding operators
    نوشته شده توسط Farhad.B.S در بخش C#‎‎
    پاسخ: 4
    آخرین پست: جمعه 04 مهر 1382, 13:06 عصر
  4. with operator
    نوشته شده توسط Sohrab_Tapar در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: شنبه 08 شهریور 1382, 22:18 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •