تاریخچه زبان برنامه نویسی سی شارپ و روند رشد آن
آموزش سی شارپ

تاریخچه زبان برنامه نویسی سی شارپ و روند رشد آن

این مقاله ترجمه شده است و ممکن است برخی از مطالب قابل ترجمه نباشد ، به همین دلیل به مرور بروز رسانی خواهد شد . 

در این مقاله با تاریخچه سی شارپ آشنا خواهیم شد. تیم دات نت همچنان در حال افزودن ویژگی های جدید به این زبان محبوب هست. چیزی که قابل توجه هست ، این مقاله را می توانید از طریق وب سایت مایکروسافت با جزئیات کامل ببنید.

زبان سی شارپ به انواع و متدهایی که در کتابخانه های کلاس فراهم شده متکی است . این کتابخانه های کلاس به واسطه پلتفرم دات نت ، در تعدادی بسته ارایه شده است.برای مثال پردازش استثنا یکی از مواردی است که به عنوان یکیج معرفی شده است. برای اطمینان از اینکه شیء پرتاب شده از Exception مشتق شده باشد ، هر عبارت یا وضعیت ارسال شده بررسی می شود. به طور مشابه، هر درخواست مهار شده (Catch) برای اطمینان از اینکه نوع گرفتار شده از Exception مشتق شده باشد  بررسی می شود. این روند کمک بسیار زیادی به برنامه نویس میکند تا خطاها را بتواند Handle کند.هر نسخه جدید امکانات بیشتری اضافه میکند. برای استفاده از آخرین ویژگی‌های زبان در محیط‌های قدیمی‌تر، ممکن است نیاز به نصب کتابخانه‌های خاصی داشته باشید.

سی شارپ نسخه 1.0

وقتی به عقب برگردید و نگاه کنید، نسخه C# 1.0 که با ویژوال استودیو دات نت 2002 منتشر شد، بسیار شبیه جاوا بود. به عنوان بخشی از اهداف طراحی اعلام شده خود برای ECMA، به دنبال این بود که یک زبان شی گرا ساده، مدرن و همه منظوره باشد. در آن زمان، شبیه جاوا، به این معنی بود که به آن اهداف اولیه طراحی دست یافت.

اما اگر اکنون به C# 1.0 نگاهی بیاندازید، گیج و مبهوت میشید . فاقد قابلیت‌های همگام‌سازی داخلی و برخی از عملکردهای نرم و روان در مورد جنریک ها بود که برای شما الان یک قابلیت ضروری است. در واقع، به طور کلی فاقد جنریک ها بود و LINQ؟ هنوز در دسترس نبود . این اضافات چند سال طول می کشید تا ظاهر شوند.

نسخه C# 1.0 در مقایسه با امروز فاقد ویژگی به نظر می رسید. اما با این حال، شما باید از یک جایی شروع می کردید. C# نسخه 1.0 جایگزین مناسبی برای جاوا در پلتفرم ویندوز بود.

ویژگی های اصلی C# 1.0 عبارتند از:

  • Classes
  • Structs
  • Interfaces
  • Events
  • Properties
  • Delegates
  • Operators and expressions
  • Statements
  • Attributes

سی شارپ ورژن 1.2

این ورژن ازسی شارپ با Visual Studio .NET 2003 ارائه شد.  این نسخه شامل تغییرات کوچکی بود . قابل توجه ترین تغییری که در این نسخه بود ، وقتی که یک حلقه foreach را صدا می زدید اگر IEnumerator اینترفیس IDisposable را پیاده سازی کرده بود ،بعد از اجرای حلقه متد Dispose روی IEnumerator صدا زده می شد.

 

سی شارپ ورژن 2.0

این نسخه از سی شارپ  در سال 2005 همراه با ویژوال استودیو 2005 معرفی شد . شروعی جالب در راه  بود . چه ویژگی هایی داشت ؟ بریم ببینیم:

  • اضافه شدن جنریک ها
  • اضافه شده Partial Types
  • متد های Anonymous
  • Nullable value Types
  • Iterators
  • Covariance and contravariance

 

سایر ویژگی های ورژن 2.0:

  • دسترسی های Getter/Setter
  • Covariance and contravariance
  • کلاس های استاتیک
  • Delegate inference

با جنریک ها، انواع و متد ها می توانند بر روی یک نوع دلخواه عمل کنند و در عین حال ایمنی نوع (Type) را حفظ کنند. به عنوان مثال، داشتن <T>List به شما امکان می دهد List<String> یا List<Int> را داشته باشید و در حین تکرار کردن یا مرور کردن از طریق آنها، عملیات ایمن تایپ را روی آن رشته ها یا اعداد صحیح انجام دهید. استفاده از جنریک  بهتر از ایجاد یک نوع ListInt است که از ArrayList مشتق می شود یا عملیات Cast کردن از object برای هر عملیاتی.

درنسخه جدید سی شارپ ،تکرار کننده ها آمدند، به طور مختصر ، تکرار کننده ها به ما این امکان را می دهند که همه موارد موجود در یک لیست را با استفاده از یک حلقه foreach بررسی کنیم. این قابلیت خوانایی کد و توانایی افراد برای تجزیه و تحلیل را افزایش می دهد.

با این وجود سی شارپ هنوز هم از قابلیت های جاوا استفاده میکرد . زیرا این قابلیت ها قبلا در جاوا وجود داشت . اما این موضوع به زودی تغییر کرد چرا که این دو  زبان از هم جدا شدند.

سی شارپ ورژن 3.0

سی شارپ 3 سال 2007 همراه با ویژوال استودیو 2008ارائه شد. و همراه با آن .Net Framework 3.5 نیز ارائه شد. در این نسخه تغییرات بزرگی ایجاد شد.

  • Auto-implemented properties
  • Anonymous types
  • Query expressions
  • Lambda expressions
  • Expression trees
  • Extension methods
  • Implicitly typed local variables
  • Partial methods
  • Object and collection initializers

در نگاهی به گذشته، بسیاری از این ویژگی ها هم اجتناب ناپذیر و هم غیرقابل تفکیک به نظر می رسند. همه آنها از نظر استراتژیک با هم هماهنگ هستند. به نظر می رسد که قاتل  ویژگی های نسخه های قبلی سی شارپ ، query expression است که به عنوان Query یکپارچه با زبان (LINQ) نیز شناخته می شود.

یک نمای ظریف تر، ویژگی های Experssion Tree ، عبارات لامبدا و انواع ناشناس (Anonymous Types) است که به عنوان پایه ای که LINQ بر اساس آن ساخته می شود، را بررسی می کند. اما، در هر صورت، C# 3.0 یک مفهوم انقلابی ارائه کرد. C# 3.0 شروع به ایجاد زمینه برای تبدیل C# به یک زبان ترکیبی شی گرا / تابعی کرده بود.

به طور خاص، اکنون می‌توانید پرس‌وجوهایی به سبک SQL بنویسید تا عملیات‌هایی را بر روی مجموعه‌ها انجام دهید. به جای نوشتن یک حلقه for برای محاسبه میانگین لیستی از اعداد صحیح، اکنون می توانید این کار را به سادگی با متد () list.Average انجام دهید. ترکیبی از query expressions  و extension methods باعث شد به نظر برسد که لیستی از اعداد صحیح بسیار هوشمندتر شده است.

زمان لازم بود تا مردم واقعاً این مفهوم را درک کنند و یکپارچه کنند، اما به تدریج این اتفاق افتاد و اکنون، پس از سال ها ، کد های سی شارپی بسیار مختصر، ساده‌تر و کاربردی‌تر شده است.

 سی شارپ نسخه 4.0

این نسخه در سال 2010 همراه با Visual Studio 2010 ارائه شد .با وجود امکانات سی شارپ 3.0 و خارج شدن سی شارپ  از زیر سایه زبان جاوا و پیشرفت روز افزون سی شارپ، محبوبیت این زبان روز به روز بیشتر میشد.

در نسخه 4.0 سی شارپ امکانات جالبی اضافه شد:

  • Dynamic binding
  • Named/Optional arguments
  • Generic covariant and contravariant
  • Embedded interop types

 

Embedded interop Types  یا انواع Interop تعبیه شده ، به شما کمک میکند تا فایل های اطلاعات COM کمتری در زمان ایجاد یک اپلیکیشن ایجاد کنید. به جای ایجاد فایل های اطلاعات COM جدا گانه ، آنها به صورت داخلی ایجاد می شوند.

Generic covariant and contravariant که بیشتر مورد توجه نویسندگان چارچوب یا Framework مورد توجه قرار گرفته بود زیرا که بیشتر به صورت آکادمیک بود تا عمومی.

پارامترهای نامگذاری شده و اختیاری به شما این امکان را می دهند که بسیاری از اضافه بارهای متدها را حذف کنید و راحتی استفاده از آنها را فراهم کنید.

یکی از ویژگی های جدید ، معرفی کلمه کلیدی dynamic بود .کلمه کلیدی dynamic  کامپایلر زمان اجرا را از کامپایل نوع، برخی از دستوارت معاف میکند. با این کلمه کلیدی می توانید ساختارهایی شبیه به زبان های برنامه نویسی پویا(dynamically typed languages ) ایجاد کنید. مانند زبان جاوا اسکریپت.

مثال زیر را ببینید :

 

dynamic x = "a string";
x = x + 6;
Console.WriteLine(x);

ابتدا یک متغییر dynamic ایجاد کرده ایم و سپس عدد 6 را با آن جمع زده ایم . می بینید که زمان کامپایل چه اتفاقی می افتد.

a string6

البته این قابلیت امکان مدیریت و تشخیص خطا را سخت تر می کند ولی از طرفی یک زبان برنامه نویسی را قدرتمندتر می کند.

سی شارپ ورژن 5.0

این نسخه از سی شارپ همراه با Visual Studio 2012 منتشر شد . تمام تمرکز این نسخه از سی شارپ روی تقویت هر چه بهتر زبان بود. بله درست متوجه شدید:

مدل async و await برای برنامه نویسی غیرهمزمان.

  • Asynchronoud members
  • Caller info attributes

همچنین در مورد Caller info Attributes می توانید در این لینک بیشتر مطالعه کنید.

Caller info attributes به شما این امکان را می دهد که به راحتی اطلاعاتی را در مورد context ی که در آن در حال اجرا هستید را ردیابی (tracking) کنید، بدون استفاده از تعداد زیادی کد reflection.

اما async و await ستاره های واقعی این نسخه از سی شارپ هستند.با ارائه این ویژگی ها مایکروسافت برگ برنده خود را رو کرد. اگر تا به حال با عملیات طولانی در حال اجرا و پیاده سازی وب تماس های برگشتی سروکار داشته اید، احتمالاً این ویژگی زبان را دوست داشته اید.  اگر تا به حال با عملیات طولانی در حال اجرا و پیاده سازی  callbacks های وب سروکار داشته اید، این ویژگی زبان سی شارپ رو قطعا دوست خواهید داشت.

سی شارپ ورژن 6.0

با نسخه های 3.0 و 5.0  سی شارپ ، ویژگی های خوب و جدیدی به زبان شئ گرای سی شارپ اضافه شده بود.

نسخه 6.0 سی شارپ همراه با Visual Studio 2015 منتشر شد . برعکس ورژن 3.0 و 5.0 این نسخه ویژگی عمده و بزرگی به همراه نداشت . اما با بسیاری از وِیژگی های کوچک منتشر شد.

در اینجا به برخی از آنها اشاره می کنیم:

  • Static imports
  • Exception filters
  • Auto-property initializers
  • Expression bodied members
  • Null propagator
  • String interpolation
  • nameof operator

و همچنین :

  • Index initializers
  • Await in catch/finally blocks
  • Default values for getter-only properties

هر کدام از این ویژگی ها در نوع خود جالب هستند. اما اگر به طور کلی به آنها نگاه کنید، یک الگوی جالب می بینید. در این نسخه، سی شارپ برای اینکه کدها مختصرتر و خواناتر شوند، کد نویسی به صورت boilerplate را حذف کرد. بنابراین برای طرفداران کد ساده و تمیز، این نسخه ی زبان ، یک پیروزی بزرگ بود.

همچنین یک کار دیگر را همراه با این نسخه انجام دادند، اگرچه این به خودی خود یک ویژگی زبان سنتی محسوب نمی شود . آنها کامپایلر Roslyn را به عنوان یک سرویس منتشر کردند. کامپایلر سی شارپ Roslyn حالا به زبان سی شارپ نوشته شده است و شما می توانید از کامپایلر Roslyn به عنوان بخشی از روند برنامه نویسی خود استفاده کنید.

سی شارپ ورژن 7.0

نسخه 7.0 سی شارپ همراه با Visual Studio 2017 منتشر شد . این نسخه دارای موارد تکمیلی و جالبی در C# 6.0 است، اما بدون کامپایلر به عنوان یک سرویس. در اینجا برخی از ویژگی های جدید آورده شده است:

  • Out variables
  • Tuples and deconstruction
  • Pattern matching
  • Local functions
  • Expanded expression bodied members
  • Ref locals
  • Ref returns

و همچنین :

  • Discards
  • Binary Literals and Digit Separators
  • Throw expressions

همه این ویژگی‌ها قابلیت‌های جدید و جالبی را برای توسعه‌دهندگان و فرصتی برای نوشتن کدهای تمیزتر از همیشه ارائه می‌کنند. نکته جالب تر در این نسخه، تراکم اعلان متغیرها با استفاده از کلمه کلیدی out و تحویل دادن چندین مقدار برگشتی با استفاده از Tuple بود .

اما سی شارپ در حال گسترده تر شدن است. NET Core اکنون هر سیستم عاملی را مورد هدف قرار می دهد و چشمانش را محکم به Cloud و قابلیت حمل بودن می دوزد. این قابلیت های جدید مطمئناً علاوه بر ارائه ویژگی های جدید ، افکار و زمان طراحان زبان را به خود مشغول می کند.

سی شارپ ورژن 7.1

مایکروسافت شروع به انتشار نسخه های نقطه ای با C# 7.1 کرد. این نسخه عنصر پیکربندی انتخاب نسخه زبان، سه ویژگی زبان جدید و رفتار کامپایلر جدید را اضافه کرد.

قابلیت های جدیدی که به این نسخه اضافه شده :

  • Async main method

نقطه ورود یا شروع یک برنامه می تواند به صورت async باشد.

  • default literal expressions
T[] InitializeArray<T>(int length, T initialValue = default)
{
    if (length < 0)
    {
        throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative.");
    }

    var array = new T[length];
    for (var i = 0; i < length; i++)
    {
        array[i] = initialValue;
    }
    return array;
}

void Display<T>(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]");

Display(InitializeArray<int>(3));  // output: [ 0, 0, 0 ]
Display(InitializeArray<bool>(4, default));  // output: [ False, False, False, False ]

System.Numerics.Complex fillValue = default;
Display(InitializeArray(3, fillValue));  // output: [ (0, 0), (0, 0), (0, 0) ]

در سی شارپ  7.1  می‌توانید از کلمه default  برای مقدار پیش‌فرض یک نوع استفاده کنید،تا زمانی که کامپایلر بتواند نوع expressions  را تشخیص دهد.

  • Inferred tuple element names

در بسیاری از موارد می توان نام عناصر تاپل را از مقداردهی اولیه آن تشخیص داد.

  • Pattern matching on generic type parameters

می توانید از عبارات تطبیق الگو در متغیرهایی استفاده کنید که نوع آنها یک پارامتر نوع جنریک است.

در نهایت، کامپایلر دو گزینه دارد -refout و -refonly که کنترل تولید اسمبلی مرجع را بر عهده دارد.

سی شارپ ورژن 7.2

این نسخه چند ویژگی کوچک به همراه داشت :

  • دستور آماده سازی اولیه آرایه با stackalloc بدهید.استفاده از عبارات ثابت با هر نوعی که از یک الگو پشتیبانی می کند.
  • دسترسی به فیلد های ثابت بدون پین کردن
  • تخصیص مجدد متغیرهای محلی ref.
  • انواع Struct فقط خواندنی را تعریف کنید تا نشان دهید که یک ساختار immutable است و باید به عنوان یک پارامتر به متدهای عضو آن ارسال شود.
  • اصلاح کننده in را روی پارامترها اضافه کنید تا مشخص کنید که یک آرگومان با مرجع ارسال می شود اما توسط متد فراخوانی شده اصلاح نمی شود.
  • از اصلاح کننده ref readonly در مقدار برگشتی متد استفاده کنید تا نشان دهید که یک متد مقدار خود را با ارجاع برمی گرداند اما اجازه نوشتن به آن شئ(object) را نمی دهد.
  • انواع ref struct را اعلام کنید تا نشان دهید که یک نوع ساختار مستقیماً به حافظه مدیریت شده دسترسی دارد و همیشه باید به پشته اختصاص داده شود.
  • از محدودیت های جنریک اضافی استفاده کنید.
  • آرگومان های نام گذاری شده را می توان با آرگومان های موقعیتی دنبال کرد.
  • استفاده از Underscore قبل از کاراکترهای عددی
  • اضافه شده محدود کننده دسترسی Private Protected
  • نتیجه یک عبارت شرطی می تواند به صورت مرجع (ref) باشد
ref int refValue = ref ((index < 5) ? ref smallArray[index] : ref largeArray[index - 5]);

سی شارپ نسخه 7.3

دو موضوع اصلی در نسخه سی شارپ 7.3 وجود دارد. یک موضوع، ویژگی هایی را ارائه می دهد که کد ایمن را قادر می سازد به اندازه کد ناامن کارایی داشته باشد. موضوع دوم بهبودهای تدریجی را برای ویژگی های موجود فراهم می کند. گزینه هایی جدید برای کامپایلر نیز در این نسخه اضافه شده است.

ویژگی های زیر باعث افزایش عملکرد کد های ایمن می شود:

  • دسترسی به فیلد های ثابت بدون پین کردن (Pinning) آنها.
  • می توانید متغیرهای محلی ref را مجدداً اختصاص دهید.
  • استفاده از مقداردهی اولیه در آرایه های stackalloc .
  • استفاده از دستورات ثابت با هر نوع (type) داده ای که از یک الگو پشتیبانی می کند .
  • استفاده بیشتر از محدودیت های عمومی (Generic).

گزینه های بهبود یافته به شرح زیر است :

  • می توانید == و != را با انواع تاپل تست کنید.
  • می توانید از متغیرهای experssion در جاهای بیشتری استفاده کنید.
  • می‌توانید ویژگی‌هایی را به فیلد پشتیبان ویژگی‌های پیاده‌سازی شده خودکار (auto-implemented properties) پیوست کنید.
  • تفکیک روش زمانی که آرگومان‌ها با in متفاوت هستند، بهبود یافته است.
  • وضوح اضافه بار اکنون موارد مبهم کمتری دارد.

ویژگی های جدید کامپایلر :

-publicsign برای فعال کردن امضای اسمبلی ها با نرم افزار منبع باز (OSS).

-pathmap برای ارائه یک نقشه برای دایرکتوری های منبع.

سی شارپ نسخه 8.0

این نسخه اولین نسخه از زبان سی شارپ هست که به طور اختصاصی NET CORE. را مورد هدف قرار می دهد. برخی از ویژگی های این نسخه به CLR مرتبط هست. برخی از آنها هم به کتابخانه های اضافه شده به NET CORE. هست.

ویژگی های نسخه 8.0 به صورت زیر است:

  • Readonly members
  • Default interface methods
  • Pattern matching enhancements:
    • Switch expressions
    • Property patterns
    • Tuple patterns
    • Positional patterns
  • Using declarations
  • Static local functions
  • Disposable ref structs
  • Nullable reference types
  • Asynchronous streams
  • Indices and ranges
  • Null-coalescing assignment
  • Unmanaged constructed types
  • Stackalloc in nested expressions
  • Enhancement of interpolated verbatim strings

اعضای Interface پیش‌فرض به پیشرفت‌هایی در CLR نیاز دارند. این ویژگی ها در CLR برای NET CORE 3.0. اضافه شدند. محدوده‌ها(Ranges) و فهرست‌ها (Indexes) و جریان‌های ناهمزمان (asynchronous streams)  به انواع جدیدی در کتابخانه‌های NET Core 3.0 نیاز دارند. انواع ارجاعی Nullable، زمانی که در کامپایلر پیاده‌سازی می‌شوند،نسبت به زمانی که کتابخانه‌ها برای ارائه اطلاعات معنایی در مورد وضعیت null آرگومان‌ها و مقادیر بازگشتی حاشیه‌نویسی می‌شوند، خیلی مفیدتر است. این حاشیه نویسی ها و پیاده سازی ها در کتابخانای NET CORE پیاده سازی شده اند.

سی شارپ ورژن 9.0

این نسخه از سی شارپ همراه با NET5. ارائه شد . نسخه 9.0 زبان پیش فرض هر اسمبلی است که دات نت 5 را پیاده سازی میکند. که شامل ویژگی های زیر است :

  • Records
  • Init only setters
  • Top-level statements
  • Pattern matching enhancements
  • Performance and interop
    • Native sized integers
    • Function pointers
    • Suppress emitting localsinit flag
  • Fit and finish features
    • Target-typed new expressions
    • static anonymous functions
    • Target-typed conditional expressions
    • Covariant return types
    • Extension GetEnumerator support for foreach loops
    • Lambda discard parameters
    • Attributes on local functions
  • Support for code generators
    • Module initializers
    • New features for partial methods

این نسخه ادامه نسخه های پیشین هست : حذف مرسومات ، جداسازی داده ها از الگوریتم ها و فراهم کردن الگو های بیشتر در جاهای بیشتر.

Top level statements که باعث شده که برنامه اصلی یا همان main program شما ساده تر شود. طبق رسوم گذشتگان برای نوشتن برنامه اصلی  باید فضای نام ، کلاس Program و متد استاتیک Main تعریف می شد که در سی شارپ 9 نیازی به این  موارد نیست.

معرفی رکوردها یک Syntax مختصر برای انواع رفرنس تایپ یا مرجع ارائه می دهد . قابلیت های تطبیق الگو به روش های مختلفی گسترش یافته است. انواع عددی اکنون از الگوهای محدوده پشتیبانی می کنند. الگوها را می توان با استفاده از and، or و not الگوها ترکیب کرد. برای خواناتر شدن الگوهای پیچیده تر می توان پرانتز اضافه کرد.

ویژگی های بیشتری برای بالا بردن کارایی سی شارپ نیز اضافه شده است :

  • انواع nint و nuint انواع اعداد صحیح با اندازه بومی را در CPU هدف مدل می کنند.
  • اشاره گرهای تابع عملکردی شبیه به delegate ارائه می‌کنند در حالی که از تخصیص‌های لازم برای ایجاد یک شی delegate اجتناب می‌کنند.
  • برای ذخیره دستورالعمل ها می توان دستورالعمل localsinit را حذف کرد.

 

 

ویژگی هایی در عملکرد Code Generator ها :

  • مقداردهی اولیه ماژول ها متد هایی هستند که زمان اجرا هنگام بارگذاری یک اسمبلی فراخوانی می شود.
  • Partial Methods از اصلاح‌کننده‌های دسترسی جدید و انواع برگشتی non-void پشتیبانی می‌کنند. در این موارد باید یک پیاده سازی ارائه شود.

C# 9 بسیاری از ویژگی های کوچک دیگری را اضافه کرده است که بهره وری توسعه دهندگان را هم در نوشتن و هم در خواندن بهبود می بخشد:

  • Target-type new expressions
  • static anonymous functions
  • Target-type conditional expressions
  • Extension GetEnumerator() support for foreach loops
  • Lambda expressions can declare discard parameters
  • Attributes can be applied to local functions

 

سی شارپ نسخه 10

سی شارپ 10 شامل ویژگی های اصلی زیر می باشد :

  • Record structs
  • Improvements of structure types
  • Interpolated string handlers
  • global using directives
  • File-scoped namespace declaration
  • Extended property patterns
  • Improvements on lambda expressions
  • Allow const interpolated strings
  • Record types can seal ToString()
  • Improved definite assignment
  • Allow both assignment and declaration in the same deconstruction
  • Allow AsyncMethodBuilder attribute on methods
  • CallerArgumentExpression attribute
  • Enhanced #line pragma

ویژگی های اضافی در حالت پیش نمایش در دسترس هستند. شما می توانید این ویژگی‌ها را امتحان کنید و درباره آن‌ها بازخورد ارائه دهید. ممکن است قبل از انتشار نهایی تغییر کنند. برای استفاده از این ویژگی‌ها، باید <LangVersion> را روی Preview در پروژه خود تنظیم کنید:

  • Generic attributes later in this article.
  • static abstract members in interfaces

سی شارپ 10 به کار روی مضامین حذف پیاده سازی های غیر ضروری، جداسازی داده ها از الگوریتم ها و بهبود عملکرد برای .NET Runtime ادامه می دهد.

بسیاری از ویژگی ها به این معنی است که کد کمتری را برای بیان مفاهیم مشابه تایپ خواهید کرد. ساختارهای رکورد بسیاری از روش‌های مشابهی را که کلاس‌های رکورد انجام می‌دهند، ترکیب می‌کنند. ساختارها و انواع ناشناس با expressions پشتیبانی می شوند. می توانید فضاهای نام را به صورت عمومی یا global  تعریف کنید. استفاده از عبارات لامبدا راحت تر شده است . الگوهایی برای new property کد مختصرتری ایجاد می‌کنند.

کنترل‌کننده‌های درون‌یابی  رشته و رفتار AsyncMethodBuilder می‌توانند عملکرد را بهبود بخشند. این ویژگی های زبان در زمان اجرا ،برای دستیابی به بهبود عملکرد در NET 6 مورد استفاده قرار خواهد گرفت.

نویسنده

یاسر دهقان

تاریخ نگارش
9 خرداد 1402
18 مقاله این نویسنده