394
0

מה חדש בNET6.? מבט מקרוב על 5 פיצ’רים שאתם חייבים להכיר

394
זמן קריאה: 3 דקות

הגרסה הראשונה של שפת C# יצאה ב2002 עם גרסה 1.0 של NET, מאז כל שנתיים-שלוש, מתעדכנת גרסת NET. ואיתה גם גרסת שפת C# והפעם השילוב החדש הוא NET6. יחד עם C#10.

השינויים בין הגרסאות בדרך כלל לא דרסטיים והם בדרך כלל שינויים של נוחות פיתוח, יעילות וכתיבת קוד נקי יותר.
יש כל כך הרבה למה לצפות ב6 Net. שיושק רשמית בנובמבר 2021, צוות הפיתוח של השפה מפרסם מעת לעת את התכונות האהובות עליהם
 אז אם אתם סקרנים כמוני לדעת איזה שינויים מחכים  – ריכזתי עבורכם 5 פיצ’רים חדשים שנקבל עם Net6. (ניתן להוריד SDK מכאן)

תוכן עניינים

Throw If Null

Syntax Sugar – מבנה תחבירי שהופך קוד לקריא יותר)

השינויים שמתווספים בשפה יעזרו לכם להפחית חזרתיות של קוד (DRY) ובהחלט יוסיפו יעילות ויגרמו לקוד שלכם להיות קריא ומסודר יותר.

דוגמא (לפני ואחרי):

				
					void DoSomething(object obj)
{
    if(obj == null)
    {
        throw new ArgumentNullException("obj");
    }
}
				
			
				
					void DoSomething(object obj)
{
    ArgumentNullException.ThrowIfNull(obj);
}
				
			

DateOnly & TimeOnly

כבר זמן רב נתקענו עם ברירת המחדל המוסכמת טיפוס ה- DateTime ב- .NET.
בתכלס הטיפוס הישן סיפק את הסחורה בלי שום בעיה אבל פעמים רבות יש לנו צורך בקוד רק בתאריך או רק בזמן ולא בשניהם יחד ואת זה פתרו עבורנו

בעיניי זה מסוג השינויים שישתמשו בהם מיד אחרי השחרור ומאלה שנאהב להשתמש בהם

				
					DateOnly date = DateOnly.MinValue;
Console.WriteLine(date); // Outputs 01/01/0001 

TimeOnly time = TimeOnly.MinValue;
Console.WriteLine(time); // Outputs 12:00 AM
				
			

IEnumerable.Chunk

נותן לכם את היכולת לקחת רק נתח / חלק מהרשימה – מעולה אם תרצו לבצע פעולות במקביל

				
					var list = Enumerable.Range(1, 100);
var chunkSize = 10;
foreach(var chunk in list.Chunk(chunkSize)) //Returns a chunk with the correct size. 
{
    foreach(var item in chunk)
    {
        Console.WriteLine(item);
    }
}
				
			

Global Using

כל קובץ #C מתחיל ברשימת הספריות / using הדרושים למחלקה. עם זאת, לפעמים זה מיותר. C# 10 מוסיפה לנו יכולת להגדיר את כולם / חלקם באופן גלובאלי – עבור הפרוייקט כולו!

כל מה שצריך לעשות זה ליצור ולתחזק קובץ נפרד שיכיל את הusing-ים הגלובאליים במקום להכריז עליהם בכל פעם מחדש.

איך עושים את זה בפועל? מאוד פשוט – יוצרים קובץ בפרוייקט (למשל usings.cs) שנראה כך:

				
					global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.AspNetCore.HttpsPolicy;
global using Microsoft.AspNetCore.Identity;
global using Microsoft.AspNetCore.Identity.UI;
global using Microsoft.EntityFrameworkCore;
global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading.Tasks;
				
			

Visual Studio (ואני מאמין שגם IDE אחרים) ידאגו להדגיש לכם using-ים ששוכפלו (מיובאים באופן גלובאלי ובאופן מקומי במקביל).
למרות שזו לא טעות ולא תהיה לכם שגיאת קומפילציה קיבלתם עוד יכולת להפחית את כמות קוד דיי גדולה שחוזרת על עצמה שוב ושוב.

Namespace

אין צורך לפתוח את הבלוק המעצבן של הnamespace שאחריו גם ככה מגיע הבלוק של הClass
דוגמא (לפני ואחרי):

				
					namespace Facebook
{
    public class Startup
    {
        ...
    }
}
				
			
				
					namespace Facebook;

public class Startup
{
    ...
}
				
			

במידה ותפתחו בלוק של namespace לאחר הכרזת namespace תקבלו שרשור של שניהם:

				
					namespace Company.Users;
// This block creates the namespace Company.Users.Component
namespace Component
{
}
				
			

כמובן שזה רק חלק קטן מהשינויים – יש עוד רבים אחרים, תוכלו לראותם בלינקים הבאים:

Performance Improvements in .NET 6

File IO improvements in .NET 6

String Interpolation in C# 10 and .NET 6

Announcing .NET 6 Preview 7

אמיר שטיימן
WRITEN BY

אמיר שטיימן

Backend Engineer @Cynet
ביום יום מפתח Backend בסביבת SaaS, מיקרו סרביסים בשילוב של מערכות מבוזרות. בזמני הפנוי - לומד ומשתדרג בעולם התוכנה, אוהד מכבי חיפה, פלייסטיישן ובירה עם חברים :)
Linkedin | Twitter

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *