שיפורים בגרסאות האחרונות של C# – פוסט #1

קדם Forums הייטק Programming Languages שיפורים בגרסאות האחרונות של C# – פוסט #1

  • שיפורים בגרסאות האחרונות של C# – פוסט #1

    פורסם ע"י Shoshi Tzi  הייטק on 25/03/2020 ב10:11 am

    בגרסאות האחרונות, בפרט בגרסה 7, מייקרוסופט שיפרה מאוד את הSyntex של השפה, הפשיטה אותו, והורידה תווים מיותרים. ממליצה מאוד להתחיל להשתמש בקיצורים המעולים הללו, שהופכים את הקוד לפשוט וקריא יותר, אני אישית בקשתי מהצוות שלי, שעל כל Request Review שהן שולחות, תוספנה איזה תיקון רטרואקטיבי לקוד קיים, שישדרג אותו. להלן כמה מהשיפורים המשמעותיים: Arrow Operator => או בשמו המייקרוסופטי: Lambda Operator מדובר ב”השאלה” מוצלחת מJS, וניתן להשתמש בו בכל פונקציה או Property המכילים פקודה אחת בלבד דוגמאות: //Old
    public int Sum
    {
    get
    {
    return X + Y;
    }
    }

    //New
    public int Sum => X + Y; גם הפונקציות לא הוזנחו, ואפשר להשתמש באופן הזה, במקום: //Old
    public int Sum(int x, int y)
    {
    return x + y;
    }

    //New
    public int Sum(int x, int y) => x + y; ואפילו כך (עובדת חרוצה אחת ספרה את הפער בתווים, וטענה בצדק שאין כאן הבדל לטובת ה=> אם כי זה בהחלט יותר ברור): //Old
    public int Sum { set { X = value; } }

    //New
    public int Sum { set => X = value; }
    באתר מיקרוסופט: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-operator Out variables עד היום, בשביל להעביר out parameter לפונקציה, היה צורך צורך להגדיר מראש public void PrintCoordinates(Point p)
    {
    int x, y; // have to “predeclare”
    p.GetCoordinates(out x, out y);
    WriteLine($”({x}, {y})”);
    } מהיום, ההגדרה יכולה להתבצע בשורת השליחה באופן הבא: public void PrintCoordinates(Point p)
    {
    p.GetCoordinates(out int x, out int y);
    WriteLine($”({x}, {y})”);
    }
    Tuples אין ספק שכל מפתח נתקל בדילמה הזו: צריך להחזיר מפונקציה 3 ערכים, “אמממ, לבנות struct/ class בשביל פונקציה אחת? קצת בזבוז…” “להשתמש בout? מעיק…” אז באה מיקרוסופט ופתרה את הבעיה בדמות Tuple, בוורסיה הקודמת שלו, הוא באמת לא משהוא, אבל לפחות חוסך. הם יצרו 8 מחלקות ג’נריות שמכילות עד 8 Properties לפי הצורך והType יקבע לפי מה שהמשתמש יעביר, דוג’: var tuple = new Tuple(1, “cat”, true);
    // Part B: access tuple properties.
    if (tuple.Item1 == 1)
    {
    Console.WriteLine(tuple.Item1);
    } האמת, שתמיד חיכיתי שC# תשדרג את הTuple ויגיע קוד שלא חשבנו עליו, אז הנה זה הגיע: הגדרה פשוטה ממש: var named = (first: “one”, second: “two”);
    if(named.first == “one”) יש לזה כמובן עוד שימושים והרחבות, ששווה ממש לקרוא עליהם כאן: https://docs.microsoft.com/en-us/dotnet/csharp/tuples עד כאן בינתיים, נתראה במאמר המשך לנושא, רק בריאות ושמחות בעזרת ה’ שושנה

    אסתר קאופמן הגיבה לפני 3 שנים, 11 חודשים 2 חברות · 1 תגובה
  • 1 תגובה
  • אסתר קאופמן

    הייטק
    חברה
    12/12/2020 ב8:50 pm

    מוסיפה עוד 2 דברים שכדאי להכיר בשפה: הגדרת משתנה חדש והשמה, בתוך ה if statement כתוצאה של התנאי
    if (jObject[“event”] is JObject @event)
    {
    doSomthing = Do(@event);
    }
    Switch מקונן שימו לב להתייחסות לdefault case הפנימי switch (val)
    {
    case Type1:
    Do1();
    break;
    case Type2:
    var res = await HttpGet(params);
    context.Response.StatusCode = res.Response switch
    {
    “ERROR” => 500,
    “VALIDATION_ERRORS” => 400,
    _ => context.Response.StatusCode
    };
    break;
    default:
    break;
    }

Log in to reply.

מעוניינת בפרסום

חשוב: לא כל פרסום מאושר, נא לפרט בדיוק במה מדובר

ניתן לפנות גם במייל ל: [email protected]

מה את מחפשת?

מילות מפתח פופולריות לפי תחומים

ניתן לחפש גם מילות מפתח , תפקידים וכישרון מיוחד שאינם מופיעים ברשימות - "נהגת", "ציור בחול" וכדומה.

דילוג לתוכן