ÙعرÙÛ Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ – C Sharp
ÙعرÙÛ Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ – C Sharp Ûا C#
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ (زبا٠برÙاÙÙ ÙÙÛØ³Û C# Ûا C Sharp) ÛÚ© زبا٠برÙاÙÙ ÙÙÛØ³Û ÚÙد Ø´ÛÙÙ Ø§Û Ø§Ø³Øª ک٠شاÙ٠اصÙÙ ÙØ§Ø¨Ø³ØªÚ¯Û Ø²Ûاد ب٠ÙÙع (Strong Typing)Ø Ø¯Ø³ØªÙرÛØ Ø§Ø¹ÙاÙÛØ ØªØ§Ø¨Ø¹ÛØ Ø¬ÙرÛÚ© Ûا جاÙØ¹Ø Ø´Û Ú¯Ø±Ø§ (ÙبتÙÛ Ø¨Ø± Ú©Ùاس) Ù ÙبتÙÛ Ø¨Ø± کاÙÙ¾ÙÙÙت است. زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ تÙسط شرکت ÙاÛکرÙساÙت در پرÙÚÙ .NET تÙسع٠ÛاÙت ٠بعدÙا تÙسط استاÙداردÙØ§Û Ecma Ù ISO ب٠عÙÙا٠ÛÚ© زبا٠برÙاÙÙ ÙÙÛØ³Û Ø§Ø³ØªØ§Ùدارد ÙÙرد تاÛÛد Ùرار گرÙت. Ø³Û Ø´Ø§Ø±Ù¾ ÛÚ©Û Ø§Ø² زبا٠ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø§Ø³Øª Ú©Ù Ø¨Ø±Ø§Û Ø²Ûرساخت زبا٠Ùشترک طراØÛ Ø´Ø¯Ù Ø§Ø³Øª.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# ÛÚ© زبا٠برÙاÙÙ ÙÙÛØ³Û ÙÙÙ ÙÙظÙØ±Ù Ù Ø´Û Ú¯Ø±Ø§ است. تÛ٠تÙسع٠آ٠تÙسط Ø¢Ùدرس ÙاÛÙسبرگ ÙداÛت ÙÛ Ø´Ùد. آخرÛÙ ÙرÚ٠اÛ٠زبا٠برÙاÙÙ ÙÙÛØ³Û C# 7.0 است ک٠در سا٠۲۰۱۷ ب٠ÙÙرا٠Visual Studio 2017 عرض٠شد٠است.
ÙØصÙÙات Ø¢ÙÙØ²Ø´Û Ùرتبط با اÛÙ ÙÙاÙÙ :
صÙر تا صد Ø¢ÙÙزش برÙاÙÙ ÙÙÛØ³Û Ø¯Ø± ÛÙÙÛØªÛ Ø¨Ø§ Ø³Û Ø´Ø§Ø±Ù¾ â Ù¾Ú© Û±
صÙر تا صد Ø¢ÙÙزش برÙاÙÙ ÙÙÛØ³Û Ø¯Ø± ÛÙÙÛØªÛ Ø¨Ø§ Ø³Û Ø´Ø§Ø±Ù¾ â Ù¾Ú© Û²
صÙر تا صد Ø¢ÙÙزش زاÙارÛÙ
اÙدا٠طراØÛ
در استاÙدارد ECMA ÙÙرست زÛر ب٠عÙÙا٠اÙدا٠زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Ùشخص شد٠است:
- اÛ٠زبا٠باÛد ÛÚ© زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Ø§Ø¯ÙØ ÙدرÙØ ÙÙÙ ÙÙظÙØ±Ù Ù Ø´Û Ú¯Ø±Ø§ باشد.
- اÛ٠زبا٠برÙاÙÙ ÙÙÛØ³Û Ù Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û ÙØ§Û Ø¢Ù Ø¨Ø§Ûد از اصÙÙ ÙÙÙØ¯Ø³Û Ùر٠اÙزار ÙاÙÙد Ø¨Ø±Ø±Ø³Û ÙØ§Ø¨Ø³ØªÚ¯Û Ø²Ûاد ب٠ÙÙØ¹Ø Ø¨Ø±Ø±Ø³Û ÙØدÙد٠آراÛÙØ Ø´ÙاساÛÛ ØªÙاش Ø¨Ø±Ø§Û Ø§Ø³ØªÙاد٠از ÙتغÛرÙØ§Û ÙÙداردÙÛ Ùشد٠٠بازÛاÙت ØاÙظ٠خÙدکار پشتÛباÙÛ Ú©Ùد. ÙÙØ§Ø±Ø¯Û ÙاÙÙد استØکا٠Ùر٠اÙزارÛØ Ù¾Ø§ÛØ¯Ø§Ø±Û Ù Ø¨Ùر٠ÙØ±Û Ø¨Ø±ÙاÙÙ ÙÙÛس از اÙÙÛت زÛØ§Ø¯Û Ø¨Ø±Ø®Ùردار ÙستÙد.
- زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Ø¨Ø±Ø§Û Ø§Ø³ØªÙاد٠در تÙسع٠کاÙÙ¾ÙÙÙت ÙØ§Û Ùر٠اÙØ²Ø§Ø±Û Ø¯Ø± Ùظر گرÙت٠شد٠است Ú©Ù Ø¨Ø±Ø§Û ØªÙسع٠در ÙØÛØ· ÙØ§Û ØªÙزÛع شد٠ÙÙاسب ÙستÙد.
- Ùاب٠ØÙ٠بÙØ¯Ù Ø¨Ø±Ø§Û Ú©Ø¯ ÙÙبع ٠برÙاÙÙ ÙÙÛس Ùا از اÙÙÛت باÙاÛÛ Ø¨Ø±Ø®Ùردار Ø§Ø³ØªØ ÙخصÙصا Ø¨Ø±Ø§Û Ú©Ø³Ø§ÙÛ Ú©Ù Ø§Ø² Ùب٠با زبا٠ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û C Ù C++ آشÙاÛÛ Ø¯Ø§Ø±Ùد.
- پشتÛباÙÛ Ø§Ø² بÛ٠اÙÙÙÙÛ Ø³Ø§Ø²Û Ø¨Ø³Ûار ÙÙ٠است.
- زبا٠برÙاÙÙ ÙÙÛØ³Û C# باÛد Ø¨Ø±Ø§Û ÙÙشت٠برÙاÙÙ Ùا Ø¨Ø±Ø§Û Ø³Ûست٠ÙØ§Û ÙÛزباÙÛ Ø´Ø¯Ù Ù Ø³Ø§ÙاÙÙ ÙØ§Û ÙÙÙت٠ÙÙاسب باشد. اÛ٠سÛست٠Ùا شاÙ٠سÛست٠ÙØ§Û Ø®ÛÙÛ Ø¨Ø²Ø±Ú¯ ک٠از سÛست٠عاÙÙ ÙØ§Û Ù¾ÛÚÛد٠استÙاد٠ÙÛ Ú©ÙÙد تا سÛست٠ÙØ§Û Ø®ÛÙÛ Ú©ÙÚÚ© است ک٠کاراÛÛ ÙØ§Û ÙØ´Ø®ØµÛ Ø¯Ø§Ø±Ùد.
- گرÚ٠برÙاÙÙ ÙØ§Û Ø³Û Ø´Ø§Ø±Ù¾ باÛد از Ùظر ÙÙزÙÙات ØاÙظ٠٠Ùدرت پردازش اÙØªØµØ§Ø¯Û Ø¹ÙÙ Ú©ÙÙØ¯Ø Ø§Ùا Ø®Ùد اÛÙ Ø²Ø¨Ø§Ù Ø¨Ø±Ø§Û Ø±Ùابت ÙستÙÛ٠از Ùظر عÙÙکرد با زبا٠C Ûا Assembly طراØÛ Ùشد٠است.
تارÛØ®Ú٠زبا٠برÙاÙÙ ÙÙÛØ³Û C#
در Ø·Û ÙراÛÙد تÙسع٠ÙرÛÙ Ùرک .NETØ Ú©ØªØ§Ø¨Ø®Ø§ÙÙ ÙØ§Û Ú©Ùاس در ابتدا تÙسط ÛÚ© سÛست٠کاÙپاÛÙر با کد ÙدÛرÛت شد٠ب٠Ùا٠Simple Managed C (SMC) ÙÙشت٠شد٠بÙدÙد. در ÚاÙÙÛÙ Ø³Ø§Ù Û±Û¹Û¹Û¹Ø Ø¢Ùدرس ÙاÛÙسبرگ ÛÚ© تÛ٠تشکÛ٠داد تا ÛÚ© زبا٠برÙاÙÙ ÙÙÛØ³Û Ø¬Ø¯Ûد ب٠Ùا٠Cool بسازد Ú©Ù ÙØ®ÙÙ C-like Object Oriented Language Ûا “Ø²Ø¨Ø§Ù Ø´Û Ú¯Ø±Ø§Û ÙاÙÙد C” بÙد. شرکت ÙاÛکرÙساÙت Ùصد داشت Ùا٠Cool را ب٠عÙÙا٠Ùا٠ÙÙاÛÛ Ø§Û٠زبا٠ÙÚ¯Ù Ø¯Ø§Ø±Ø¯Ø Ø§Ùا ب٠خاطر دÙاÛÙ ÙربÙØ· ب٠عÙاÙت ØªØ¬Ø§Ø±Û Ø§Ø² اÛ٠کار صر٠Ùظر کرد. زÙاÙÛ Ú©Ù Ù¾Ø±ÙÚÙ .NET در Ú©ÙÙراÙس تÙسع٠دÙÙدگا٠ØرÙÙâØ§Û Ø¯Ø± جÙÙØ§Û Ø³Ø§Ù Û²Û°Û°Û° ب٠طÙر عÙÙÙÛ Ø§Ø¹ÙØ§Ù Ø´Ø¯Ø Ø§Û٠زبا٠ب٠C# تغÛÛر Ùا٠داد٠شد ٠کتابخاÙÙ ÙØ§Û Ú©Ùاس Ù ASP.NET Runtime ب٠C# اÙتÙا٠داد٠شدÙد.
Ø·Ø±Ø§Ø Ø§ØµÙ٠زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Ù ÙعÙار ارشد شرکت ÙاÛکرÙساÙØªØ Ø¢Ùدرس ÙاÛÙسبرگ است ک٠در گذشت٠در طراØÛ Turbo PascalØ Embarcadero Delphi (در گذشت٠CodeGear DelphiØ Inprise Delphi Ù Borland Delphi) Visual J++ دست داشت. ÙÛ Ø¯Ø± ÙØاصب٠Ùا Ù ÙÙاÙات ÙÙÛ Ø§Ø¸Ùار کرد٠است Ú©Ù ÙÙاÛص بÛشتر زبا٠ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø§ØµÙÛ (ÙاÙÙد C++Ø JavaØ Delphi Ù Smalltalk)Ø Ø§ØµÙ٠اÙÙÛ٠زÙØ§Ù Ø§Ø¬Ø±Ø§Û Ø²Ø¨Ø§Ù Ùشترک (Common Language Runtime – CLR) را بÙا ÙÙادÙد ک٠بعدÙا باعث طراØÛ Ø²Ø¨Ø§Ù C# شد.
جÛÙز گاسÙÛÙÚ© ک٠در سا٠۱۹۹۴ زبا٠برÙاÙÙ ÙÙÛØ³Û Ø¬Ø§Ùا را ساخت ٠بÛ٠جÙÛ Ú©Ù ÛÚ©Û Ø§Ø² ÙÙسس ÙØ§Û Ø´Ø±Ú©Øª Sun Microsystems Ø§Ø³ØªØ Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û C# را ÛÚ© تÙÙÛد از جاÙا داÙستÙد. جÛÙز گاسÙÛÙÚ¯ در اداÙ٠اظÙار داشت Ú©Ù “Ø³Û Ø´Ø§Ø±Ù¾ ب٠ÙÙØ¹Û ÙÙا٠جاÙا است Ú©Ù ÙابÙÛت اطÙÛÙاÙØ Ø®ÙاÙÛت ٠اÙÙÛت از Ø¢Ù Øذ٠شد٠است”. Ú©ÙاÙس کرÙت ٠آÙجÙÛکا ÙاÙگر (ÙÙÙÙا٠کتاب ÙØ§Û C++ streams) در ÛÚ© پست ÙبÙاگ اظÙار کردÙد Ú©Ù “جاÙا Ù Ø³Û Ø´Ø§Ø±Ù¾ تÙرÛبا زبا٠ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û ÛکساÙÛ ÙستÙد ٠اÛÙ ÛÚ© تکرار کس٠کÙÙد٠بدÙÙ ÙÙØ¢ÙØ±Û Ø§Ø³Øª. اÙراد Ú©ÙÛ Ø§Ø¯Ø¹Ø§ Ø®ÙاÙÙد کرد ک٠جاÙا Ù C# زبا٠ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø§ÙÙÙØ§Ø¨Û ÙستÙد Ú©Ù Ø´ÛÙÙ ÙÙشت٠برÙاÙÙ Ùا را تغÛÛر داد٠اÙد. Ø²Ø¨Ø§Ù Ø³Û Ø´Ø§Ø±Ù¾ بسÛØ§Ø±Û Ø§Ø² ÚÛزÙا را از جاÙا گرÙت٠است ٠باÙعکس. اکÙÙÙ Ú©Ù C# از ÙابÙÛت ÙØ§Û Boxing Ù Unboxing پشتÛباÙÛ ÙÛ Ú©ÙØ¯Ø Ø¯Ø± جاÙا ÙÙ ÙÛÚÚ¯Û ÙØ§Û Ø¨Ø³Ûار ÙشابÙÛ Ø§Ø¶Ø§ÙÙ Ø®ÙاÙد شد”. در جÙÙØ§Û Ø³Ø§Ù Û²Û°Û°Û°Ø Ø¢Ùدرس ÙاÛÙسبرگ Ú¯Ùت Ú©Ù “Ø²Ø¨Ø§Ù Ø³Û Ø´Ø§Ø±Ù¾ تÙÙÛد از جاÙا ÙÛست ٠طراØÛ Ø¢Ù Ø¨Ûشتر ب٠زبا٠C++ ÙزدÛÚ© است”.
از زÙا٠عرض٠C# 2.0 در ÙÙاÙبر Ø³Ø§Ù Û²Û°Û°ÛµØ Ø²Ø¨Ø§Ù ÙØ§Û Ø³Û Ø´Ø§Ø±Ù¾ ٠جاÙا ÙسÛرÙØ§Û ØªÚ©Ø§ÙÙ ÙتÙاÙØªÛ Ø±Ø§ Ù¾ÛØ´ گرÙت٠اÙد ٠شباÙت Ø¢ÙÙا ب٠ÙÙ Ú©Ùتر شد٠است. ÛÚ©Û Ø§Ø² تÙاÙت ÙØ§Û Ø§ØµÙÛ Ø¢ÙÙا با اضاÙ٠شد٠Generic Ùا ب٠Ùر د٠زبا٠با کاربردÙØ§Û Ø¨Ø³Ûار ÙتÙاÙت آغاز شد. زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ از جسÙÛت داد٠استÙاد٠ÙÛ Ú©Ùد تا اشÛØ§Û Ø¬ÙرÛÚ© Ú©Ùاس اÙÙ ÙراÙÙ Ú©Ùد ک٠از Ø¢ÙÙا ÙÛ ØªÙا٠ÙاÙÙد Ùر Ú©Ùاس دÛÚ¯Ø±Û Ø§Ø³ØªÙاد٠کرد ٠تÙÙÛد کد در زÙا٠ÙÙد شد٠کÙاس اÙجا٠ÙÛ Ø´Ùد. ب٠عÙاÙÙØ C# ÚÙدÛÙ ÙÛÚÚ¯Û ÙÙ٠اضاÙ٠کرد٠است تا برÙاÙÙ ÙÙÛØ³Û Ø¨Ù Ø³Ø¨Ú© ØªØ§Ø¨Ø¹Û Ø±Ø§ تطبÛ٠دÙد ٠با اÙزÙÙÙ ÙØ§Û LINQ ک٠در C# 3.0 عرض٠شد ٠با پشتÛباÙÛ ÙرÛÙ Ùرک از عبارات Lambda Ù ÙÙع ÙØ§Û ÙاشÙØ§Ø³Ø Ø¨Ù Ø§Ùج Ø®Ùد رسÛد. اÛÙ ÙÛÚÚ¯Û Ùا ب٠برÙاÙÙ ÙÙÛس C# اجاز٠ÙÛ Ø¯ÙÙد تا در صÙرت ÙÙÛد بÙØ¯Ù Ø¨Ø±Ø§Û Ø¨Ø±ÙاÙÙ Ø§Ø´Ø Ø§Ø² تکÙÛÚ© ÙØ§Û Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û ØªØ§Ø¨Ø¹Û ÙاÙÙد closure Ùا استÙاد٠کÙد. اÙزÙÙÙ ÙØ§Û LINQ Ù Import ÙØ§Û ØªØ§Ø¨Ø¹Û Ø¨Ù ØªÙسع٠دÙÙدگا٠کÙÚ© ÙÛ Ú©ÙÙد تا ÙÙدار کدÙØ§Û ØªÚ©Ø±Ø§Ø±Û Ú©Ù Ø¯Ø± کارÙØ§Û Ø±Ø§Ûج ÙاÙÙد پرس ٠ج٠از ÛÚ© پاÛگا٠دادÙØ ØªØ¬Ø²ÛÙ ÛÚ© ÙاÛÙ xml Ûا جستج٠در ÛÚ© ساختار داد٠استÙاد٠ÙÛ Ø´ÙÙد را کاÙØ´ دÙÙد ٠بÛشتر رÙÛ ÙÙط٠برÙاÙ٠تÙرکز Ú©ÙÙد تا Ø®ÙاÙاÛÛ Ù ÙابÙÛت ÙÚ¯ÙØ¯Ø§Ø±Û Ø±Ø§ بÙبÙد دÙÙد.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# در گذشت٠ÛÚ© ÙÙاد ب٠Ùا٠اÙØ¯Û (برداشت از Ø¢Ùدرس ÙاÛسÙبرگ) داشت ک٠در Û²Û¹ ÚاÙÙÛ٠سا٠۲۰۰۴ بازÙشست٠شد.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# در ابتدا Ø¨Ø±Ø§Û Ø¨Ø±Ø±Ø³Û Ø¯Ø± Ú©ÙÛسÛÙÙ ÙØ±Ø¹Û ISO JTC 1/SC 22 ثبت شد٠بÙØ¯Ø Ø§Ùا از آ٠خارج شد ٠تØت تاÛÛد ISO/IEC 23270:2006 Ùرار گرÙت.
ÙاÙ
ÙØ§Ù Ø³Û Ø´Ø§Ø±Ù¾ “C Sharp” برگرÙت٠از Ùت ÙÙسÛÙاÛÛ Ø§Ø³Øª ک٠عÙاÙت # Ùشا٠ÙÛ Ø¯Ùد ک٠گا٠Ùت ÙÙشت٠شد٠باÛد ÙÛ٠پرد٠باÙاتر ÙÙاخت٠شÙد. اÛÙ ÙاÙÙد زبا٠برÙاÙÙ ÙÙÛØ³Û C++ است ک٠عÙاÙت ++â Ùشا٠ÙÛ Ø¯Ùد Ú©Ù ÛÚ© ÙتغÛر باÛد ب٠عÙاÙÙ ÙÙدار Û± گردد. عÙاÙت # ÙÙÚÙÛÙ ÙÙاÛاÙگر ÛÚ© ÙÛÚ¯Úر با ÚÙار عÙاÙت +â است (در ÛÚ© شبک٠د٠در دÙ) Ú©Ù Ùشا٠ÙÛ Ø¯Ùد اÛ٠زبا٠تÙØ³Ø¹Ù Ø§Û Ø¨Ø± C++â است.
ب٠دÙÛÙ ÙØدÙدÛت ÙØ§Û ÙÙÛ Ø¨Ø±Ø§Û ÙÙاÛØ´ (ÙÙÙت ÙØ§Û Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯Ø ÙرÙرگرÙا ٠غÛرÙ) ٠اÛÙÚ©Ù ÙÙاد شارپ (U+266F â¯) در بÛشتر Ú©ÛبÙردÙا ÙÙجÙد ÙÛØ³ØªØ ÙÙاد عدد (U+0023 #) ب٠صÙرت تÙرÛØ¨Û Ø§Ùتخاب شد تا ÙÙاÛاÙگر ÙÙاد شارپ در Ùا٠اÛ٠زبا٠برÙاÙÙ ÙÙÛØ³Û Ø¨Ø§Ø´Ø¯. اÛ٠تبدÛÙ ÙÙاد در Ùشخصات Ø²Ø¨Ø§Ù Ø³Û Ø´Ø§Ø±Ù¾ ECMA-334 Ø¢Ùرد٠شد٠است. ÙرÚÙد در صÙرت عÙÙÛ Ø¨Ùد٠(ÙØ«Ùا Ø¨Ø±Ø§Û ØªØ¨ÙÛغات Ûا رÙÛ Ø¬Ø¹Ø¨Ù Ùا)Ø ÙاÛکرÙساÙت از ÙÙا٠ÙÙاد ÙÙسÛÙاÛÛ Ø§ØµÙÛ Ø§Ø³ØªÙاد٠ÙÛ Ú©Ùد.
پسÙÙد شارپ تÙسط ØªØ¹Ø¯Ø§Ø¯Û Ø§Ø² دÛگر زبا٠ÙØ§Û .NET ک٠تÙÙØ¹Û Ø§Ø² زبا٠ÙØ§Û ÙÙجÙد ÙستÙد ÙÛز استÙØ§Ø¯Ù Ø´Ø¯Ù Ø§Ø³ØªØ Ø§Ø² جÙÙÙ J# (ÛÚ© زبا٠.NET ک٠تÙسط ÙاÛکرÙساÙت طراØÛ Ø´Ø¯Ù Ø§Ø³Øª ٠برگرÙت٠از Java 1.1 است)Ø A# (برگرÙت٠از ADA) ٠زبا٠برÙاÙÙ ÙÙÛØ³Û ØªØ§Ø¨Ø¹Û F#. Ùسخ٠اÙÙÛÙ Eiffel for .NET ب٠Ùا٠Eiffel# ÙاÙÛد٠ÙÛشد. اÛÙ Ùا٠اکÙÙÙ ÙÙسÙØ® Ø´Ø¯Ù Ø§Ø³ØªØ Ø²Ûرا زبا٠کاÙÙ Eiffel پشتÛباÙÛ ÙÛ Ø´Ùد. از اÛ٠پسÙÙد ÙÙÚÙÛÙ Ø¨Ø±Ø§Û Ú©ØªØ§Ø¨Ø®Ø§ÙÙ ÙاÛÛ ÙاÙÙد Gtk# (ÛÚ© اÙÚ¯ÙÛ Ø¢Ø¯Ø§Ù¾ØªÙر .NET Ø¨Ø±Ø§Û GTK+ ٠دÛگر کتابخاÙÙ ÙØ§Û GNOME) Ù Cocoa# (ÛÚ© اÙÚ¯ÙÛ Ø¢Ø¯Ø§Ù¾ØªÙر Ø¨Ø±Ø§Û Cocoa) استÙاد٠شد٠است.
ÙرÚÙ ÙØ§Û Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾
ÙÛÚÚ¯Û ÙØ§Û Ø§Ø¶Ø§Ù٠شد٠در ÙرÚÙ ÙØ§Û ÙختÙÙ
C# 2.0
- جÙرÛÚ© Ùا
- ÙÙع ÙØ§Û Ø¬Ø²Ø¦Û
- ÙتدÙØ§Û ÙاشÙاس
- تکرار Ú©ÙÙد٠Ùا
- ÙÙع ÙØ§Û Nullable
- Ø¯Ø³ØªØ±Ø³Û Ø¬Ø¯Ø§Ú¯Ø§ÙÙ Getter/setter
- تبدÛÙ ÙØ§Û Ú¯Ø±ÙÙÛ Ùتد (delegate Ùا)
- ÙتغÛرÙØ§Û Ùشترک Ù ÙتÙØ§Ø¨Ù Ø¨Ø±Ø§Û delegate Ùا
- Ú©Ùاس ÙØ§Û Ø§Ø³ØªØ§ØªÛÚ©
- استÙباط delegate
C# 3.0
- ÙتغÛرÙØ§Û Local با ÙÙع Ùشخص
- ÙÙداردÙÙد٠ÙØ§Û Ø§ÙÙÛÙ Objectâ Ù Collection
- خصÙصÛات اجرا شد٠خÙدکار
- ÙÙع ÙØ§Û ÙاشÙاس
- ÙتدÙØ§Û Extension
- عبارات Query
- عبارات Lambda
- درخت ÙØ§Û Expression
- ÙتدÙØ§Û Ø¬Ø²Ø¦Û
C# 4.0
- اتصا٠دÛÙاÙÛÚ©
- آرگÙÙا٠ÙØ§Û ÙØ§Ù Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù Ù Ø§Ø®ØªÛارÛ
- Covariance Ù Contravariance جÙرÛÚ©
- ÙÙع ÙØ§Û Embedded interop
C# 5.0
- ÙتدÙØ§Û ÙاÙÙگاÙ
- خصÛص٠ÙØ§Û Caller Info
C# 6.0
- کاÙپاÛÙر ب٠عÙÙا٠ÛÚ© سرÙÛس (Roslyn)
- Ùارد Ú©Ø±Ø¯Ù Ø§Ø¹Ø¶Ø§Û ÙÙع استاتÛÚ© ب٠Namespace
- ÙÛÙترÙØ§Û Ø§Ø³ØªØ«Ùا
- اÙتظار در بÙÙÚ© ÙØ§Û catch/finally
- ÙÙداردÙÙد٠ÙØ§Û Ø§ÙÙÛ٠با خصÙصÛت Ø®Ùدکار
- ÙÙادÛر Ù¾ÛØ´ Ùرض Ø¨Ø±Ø§Û Ø®ØµÙصÛØ§ØªÛ Ú©Ù ØªÙÙا getter دارÙد
- Ø§Ø¹Ø¶Ø§Û Expression-bodied
- تکثÛر دÙÙد٠Null (عÙÙکرد Ø´Ø±Ø·Û Null ÛØ±Ø±Ø³Û Null Ùختصر)
- درÙÙ ÛØ§Ø¨Û Ø±Ø´ØªÙ
- عÙÙگر nameof
- ÙÙداردÙÙد٠اÙÙÛ٠دÛÚ©Ø´ÙرÛ
C# 7.0
- Literal ÙØ§Û Ø¯ÙدÙÛÛ
- تÙÚ©ÛÚ© Ú©ÙÙد٠ÙØ§Û Ø±ÙÙ
- تÙابع Local
- Type switch
- Return ÙØ§Û Ref
- تاپ٠ÙØ§Û ÙØ§Ù Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù
- Out var
- تطبÛ٠اÙÚ¯Ù
- Return ÙØ§Û Asynch اختÛارÛ
- Getter Ùا Ù Setter ÙØ§Û Expression bodied
- Constructor Ùا Ù finalizer ÙØ§Û Expression bodied
Ùاعد٠ÙØÙÛ
Ùاعد٠ÙØÙÛ Ø§ØµÙÛ Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û C# ÙاÙÙد دÛگر زبا٠ÙØ§Û Ø³Ø¨Ú© C âØ§Ø³ØªØ ÙاÙÙد CØ C++â ٠جاÙا.
- از ÙÙØ·Ù ÙÛرگÙÙ Ø¨Ø±Ø§Û Ùشخص کرد٠اÙتÙØ§Û Ø¹Ø¨Ø§Ø±Øª استÙاد٠ÙÛ Ø´Ùد.
- از Ø¢Ú©ÙÙادÙا Ø¨Ø±Ø§Û Ú¯Ø±Ù٠بÙØ¯Û Ø¹Ø¨Ø§Ø±Øª Ùا استÙاد٠ÙÛ Ø´Ùد. عبارات ÙعÙÙÙا در داخ٠ÙتدÙا (تÙابع)Ø ØªÙابع در داخ٠کÙاسâÙا Ù Ú©Ùاس Ùا در داخ٠NamespaceÙا گرÙ٠بÙØ¯Û ÙÛ Ø´ÙÙد.
- ÙتغÛرÙا تÙسط عÙاÙت ÙساÙÛ ØªØ®ØµÛص داد٠ÙÛ Ø´ÙÙØ¯Ø Ø§Ùا با استÙاد٠از د٠عÙاÙت ÙساÙÛ ÙÙاÛس٠ÙÛ Ø´ÙÙد.
- از کرÙØ´Ù Ùا Ø¨Ø±Ø§Û Ø§Ø±Ø§ÛÙ Ùا استÙاد٠ÙÛ Ø´ÙØ¯Ø ÙÙ Ø¨Ø±Ø§Û Ø§Ø¹Ùا٠کرد٠آÙÙا Ù ÙÙ Ø¨Ø±Ø§Û Ú¯Ø±Ùت٠ÛÚ© ÙÙدار در شاخص Ø®Ø§ØµÛ Ø§Ø² Ø¢ÙÙا.
ÙÛÚÚ¯Û ÙØ§Û Ø¨Ø§Ø±Ø² زبا٠برÙاÙÙ ÙÙÛØ³Û C#
Ø¨Ø±Ø®Û Ø§Ø² ÙÛÚÚ¯Û ÙØ§Û Ø¨Ø§Ø±Ø² C# ک٠آ٠را از CØ C++ ٠جاÙا ÙتÙاÛز ÙÛ Ú©ÙÙد شاÙÙ ÙÙارد زÛر است:
ÙابÙÛت ØÙÙ
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Ø·ÙØ±Û Ø·Ø±Ø§ØÛ Ø´Ø¯Ù Ø§Ø³Øª Ú©Ù ÙستÙÛÙا ÙÙاÛاÙگر زÛرساخت زبا٠Ùشترک است. بÛشتر ÙÙع ÙØ§Û Ø¯Ø±ÙÙÛ Ø¢Ù ÙتÙاظر با ÙÙع ÙØ§Û ÙÙØ¯Ø§Ø±Û Ø§Ø³Øª ک٠تÙسط ÙرÛÙ Ùرک CLI بکار گرÙت٠شد٠است. ÙرÚÙد در Ùشخصات زباÙØ ÙÙزÙÙات تÙÙÛد کد کاÙپاÛÙر Ø¢Ùرد٠ÙØ´Ø¯Ù Ø§Ø³ØªØ ÛعÙÛ ÙÚ¯Ùت٠است Ú©Ù ÛÚ© کاÙپاÛÙر C# باÛد ÛÚ© Runtime زبا٠Ùشترک را Ùد٠Ùرار دÙد Ûا زبا٠Ùاسط٠Ùشترک تÙÙÛد Ú©Ùد Ûا Ùر ÙرÙت خاص دÛÚ¯Ø±Û Ø±Ø§ تÙÙÛد Ú©Ùد. ب٠صÙرت تئÙرÛØ ÛÚ© کاÙپاÛÙر C#â ÙÛ ØªÙاÙد ÙاÙÙد کاÙپاÛÙرÙØ§Û Ø³ÙØªÛ C++ Ûا FortranØ Ú©Ø¯ÙØ§Û ÙاشÛÙÛ ØªÙÙÛد Ú©Ùد.
ÙØ§Ø¨Ø³ØªÚ¯Û Ø¨Ù ÙÙع
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ از اعÙا٠ÙØ§Û ÙتغÛرÙØ§Û Ø¶ÙÙÛ Ùابست٠زÛاد ب٠ÙÙع با Ú©ÙÙÙ Ú©ÙÛØ¯Û var ٠از آراÛÙ ÙØ§Û ÙÙع ضÙÙÛ Ø¨Ø§ Ú©ÙÙÙ Ú©ÙÛØ¯Û new[] ب٠ÙÙرا٠ÛÚ© آغازگر Collection پشتÛباÙÛ ÙÛ Ú©Ùد.
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ از ÛÚ© ÙÙع داد٠بÙÙÛ ÙØض با Ú©ÙÙÙ Ú©ÙÛØ¯Û bool پشتÛباÙÛ ÙÛ Ú©Ùد. عبارات Ø´Ø±Ø·Û ÙاÙÙد while ٠if ÙÛازÙÙد ÛÚ© Expression از ÙÙØ¹Û ÙستÙد ک٠از عÙÙگر true استÙاد٠ÙÛ Ú©ÙØ¯Ø ÙاÙÙد ÙÙع بÙÙÛ. با اÛÙÚ©Ù C++ ÛÚ© ÙÙع بÙÙÛ Ø¯Ø§Ø±Ø¯Ø ÙÛ ØªÙا٠آ٠را آزاداÙ٠ب٠اعداد صØÛØ ØªØ¨Ø¯Û٠کرد Ù ExpressionÙاÛÛ ÙاÙÙد if(a) تÙÙا ÙÛاز ب٠اÛ٠دارÙد Ú©Ù a Ùاب٠تبدÛ٠ب٠bool باشد ٠اجاز٠ÙÛ Ø¯ÙÙد a ÛÚ© int Ûا ÛÚ© ÙشاÙگر باشد. زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ اجاز٠اÛ٠رÙÛکرد “اعداد صØÛØ Ø¨Ù ÙعÙÛ true Ûا false” را ÙÙÛ Ø¯ÙÙØ¯Ø Ø¨Ù Ø§Û٠دÙÛÙ Ú©Ù Ùادار کرد٠برÙاÙÙ ÙÙÛس Ùا ب٠استÙاد٠از Ø¹Ø¨Ø§Ø±Ø§ØªÛ Ú©Ù ÙتÛج٠آÙÙا دÙÛÙا bool است ÙÛ ØªÙاÙد از برÙز Ø¨Ø±Ø®Û ÙØ´Ú©Ùات برÙاÙÙ ÙÙÛØ³Û Ø¬ÙÙÚ¯ÛØ±Û Ú©ÙØ¯Ø ÙاÙÙد i f(a=b) (استÙاد٠از اختصاصگر =Â Ø¨Ù Ø¬Ø§Û Ø¨Ø±Ø§Ø¨Ø±Û == ک٠با اÛÙک٠در C Ûا C++ ÛÚ© خطا ÙÛØ³ØªØ ØªÙسط کاÙپاÛÙر Ùشخص ÙÛ Ø´Ùد).
زبا٠برÙاÙÙ ÙÙÛØ³Û C# بÛشتر از C++ اÛÙÙÛ ÙÙع دارد. تÙÙا تبدÛÙ ÙØ§Û Ø¶ÙÙÛ Ù¾ÛØ´ Ùرض Ø¢ÙÙاÛÛ ÙستÙد ک٠اÛÙÙ ÙستÙØ¯Ø ÙاÙÙد گسترش داد٠اعداد صØÛØ. اÛ٠کار در زÙا٠کاÙپاÛ٠کردÙØ ÙÙگا٠JIT ٠گاÙÛ ÙÙاÙع ÙÙگا٠اجرا صÙرت ÙÛ Ú¯Ûرد. ÙÛÚ ØªØ¨Ø¯Û٠ضÙÙÛ Ø¨ÛÙ ÙÙادÛر بÙÙÛ Ù Ø§Ø¹Ø¯Ø§Ø¯ صØÛØ ØµÙرت ÙÙÛ Ú¯ÛØ±Ø¯Ø ÙÙÚÙÛ٠بÛ٠اعداد Ø´ÙØ§Ø±Ø´Û Ù Ø§Ø¹Ø¯Ø§Ø¯ صØÛØ (ب٠جز ÙÙدار Literal صÙر Ú©Ù ÙÛ ØªÙا٠آ٠را ب٠طÙر ضÙÙÛ Ø¨Ù Ùر ÙÙع Ø´ÙØ§Ø±Ø´Û ØªØ¨Ø¯Û٠کرد). Ùر ÙÙع تبدÛ٠تÙسط کاربر باÛد ب٠عÙÙا٠ÙØ§Ø¶Ø Ûا ضÙÙÛ Ùشخص Ø´ÙØ¯Ø Ø¨Ø±Ø®Ùا٠ConstructorÙØ§Û Ú©Ù¾Û Ù Ø¹ÙÙگرÙØ§Û ØªØ¨Ø¯ÛÙ C++ Ú©Ù Ùر د٠ب٠طÙر Ù¾ÛØ´ Ùرض ضÙÙÛ ÙستÙد.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# از covariance Ù contravariance در ÙÙع ÙØ§Û Ø¬ÙرÛÚ© بÙضÙØ Ù¾Ø´ØªÛباÙÛ ÙÛ Ú©ÙØ¯Ø Ø¨Ø±Ø®Ùا٠C++ ک٠تÙÙا از طرÛÙ ÙعÙاشÙØ§Ø³Û ÙÙع ÙØ§Û Return در ÙتدÙØ§Û ÙØ¬Ø§Ø²Û ØªØ§ ØØ¯Û Ø§Ø² contravariance پشتÛباÙÛ ÙÛ Ú©Ùد.
Ø§Ø¹Ø¶Ø§Û Enumeration در Scope ÙربÙØ· ب٠خÙد Ùرار داد٠ÙÛ Ø´ÙÙد.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# اجاز٠ÙتغÛرÙا Ûا تÙابع Global را ÙÙÛ Ø¯Ùد. تÙا٠ÙتدÙا ٠اعضا باÛد در داخ٠کÙاس Ùا اعÙا٠شÙÙد. Ø§Ø¹Ø¶Ø§Û Ø§Ø³ØªØ§ØªÛÚ© از Ú©Ùاس ÙØ§Û Public ÙÛ ØªÙاÙÙد جاÛگزÛÙ ÙتغÛرÙا ٠تÙابع Global Ø´ÙÙد.
ÙتغÛرÙØ§Û Local ÙÙÛ ØªÙاÙÙد ÙتغÛرÙØ§Û Ø¨ÙÙÚ© ÙØصÙر Ú©ÙÙد٠را بپÙشاÙÙد.
برÙاÙÙ ÙÙÛØ³Û Ùتا
برÙاÙÙ ÙÙÛØ³Û Ùتا از طرÛ٠خصÛص٠ÙØ§Û C Sharp Ø¨Ø®Ø´Û Ø§Ø² اÛ٠زبا٠است. بسÛØ§Ø±Û Ø§Ø² اÛ٠خصÛص٠ÙØ§Ø Ú©Ø§Ø±Ø§ÛÛ GCC Ùا ٠داÛرکتÛÙÙØ§Û Ù¾ÛØ´ پردازÙد٠ÙبتÙÛ Ø¨Ø± Ù¾ÙتÙر٠Visual C++ را تکثÛر ÙÛ Ú©ÙÙد.
ÙتدÙا ٠تÙابع
ÙاÙÙد C++ ٠برخÙا٠جاÙØ§Ø Ø¨Ø±ÙاÙÙ ÙÙÛس ÙØ§Û C Sharp باÛد از Ú©ÙÙÙ Ú©ÙÛØ¯Û Virtual استÙاد٠کÙÙد تا اجاز٠دÙÙد ÙتدÙا تÙسط زÛرکÙاس Ùا بازÙÙÛØ³Û Ù Override Ø´ÙÙد.
ÙتدÙØ§Û Extension در C# ب٠برÙاÙÙ ÙÙÛس Ùا اجاز٠ÙÛ Ø¯ÙÙد از ÙتدÙØ§Û Ø§Ø³ØªØ§ØªÛÚ© استÙاد٠کÙÙØ¯Ø ÙاÙÙد اÛÙک٠آÙÙا از جدÙÙ ÙتدÙØ§Û ÛÚ© Ú©Ùاس گرÙت٠شد٠باشÙد ٠ب٠برÙاÙÙ ÙÙÛس Ùا اجاز٠ÙÛ Ø¯ÙÙد ب٠ÛÚ© Ø´Û ÙØªØ¯Û Ø§Ø¶Ø§ÙÙ Ú©ÙÙد Ú©Ù Øس ÙÛ Ú©ÙÙد باÛد رÙÛ Ø¢Ù Ø´Û Ù ÙشتÙات Ø¢Ù ÙجÙد داشت٠باشد.
ÙÙع dynamic اجاز٠اتصا٠Ùتد Run-timeâ را ÙÛ Ø¯Ùد ٠اجاز٠ÙراخÙاÙÛ ÙØ§Û Ùتد ÙاÙÙد جاÙا اسکرÛپت ٠ترکÛب بÙØ¯Û Ø´Û Ø¯Ø± زÙا٠اجرا را ÙÛ Ø¯Ùد.
زبا٠برÙاÙÙ ÙÙÛØ³Û C# از ÙشاÙگرÙØ§Û ØªØ§Ø¨Ø¹ با ÙØ§Ø¨Ø³ØªÚ¯Û Ø²Ûاد ب٠ÙÙع از طرÛÙ Ú©ÙÙÙ Ú©ÙÛØ¯Û delegate پشتÛباÙÛ ÙÛ Ú©Ùد. ÙاÙÙد Signalâ Ù Slot شب٠C++ ÙربÙØ· ب٠ÙرÛÙ Ùرک QtØ Ø³Û Ø´Ø§Ø±Ù¾ ÙÙ Ø¯Ø§Ø±Ø§Û ÙعÙاشÙØ§Ø³Û Ø¯Ø± زÙÛÙ٠رÙÛدادÙØ§Û Ø¨Ù Ø³Ø¨Ú© Publish-Subscribeâ Ø§Ø³ØªØ Ø§Ùبت٠C#â Ø¨Ø±Ø§Û Ø§Û٠کار از delegate Ùا استÙاد٠ÙÛ Ú©Ùد.
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ ÙراخÙاÙÛ ÙØ§Û Ùتد synchronized جاÙا ÙاÙÙد از طرÛÙ [MethodImpl(MethodImplOptions.Synchronized)] دارد ٠از طرÛÙ Ú©ÙÙÙ Ú©ÙÛØ¯Û lock از ÙÙÙ ÙØ§Û ÙÙØصر ÙتÙاب٠پشتÛباÙÛ ÙÛ Ú©Ùد.
Property
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Property ÙاÛÛ Ø¨Ù Ø¹ÙÙا٠شکر ÙØÙÛ Ø¨Ø±Ø§Û ÛÚ© اÙÚ¯ÙÛ Ø±Ø§Ûج ارائ٠ÙÛ Ú©Ùد ک٠در Ø¢Ù ÛÚ© ج٠ÙØªØ¯Ø accessor (getter) Ù mutator (setter) عÙÙÛات Ùا را رÙÛ ÛÚ© خصÛص٠از ÛÚ© Ú©Ùاس ÙØصÙر ÙÛ Ú©ÙÙد. ÙÛØ§Ø²Û Ø¨Ù ÙÙشت٠ÙتدÙØ§Û Ø§Ø¶Ø§ÙÛ Ø¨Ø±Ø§Û Ø¨Ú©Ø§Ø±Ú¯ÛØ±Û getter/setter ÙجÙد Ùدارد Ù Ø¨Ù Ø¬Ø§Û ÙراخÙاÙÛ ÙØ§Û Ùتد Ø·ÙÙاÙÛØ Ø§Ø² طرÛÙ Ùاعد٠ÙØÙÛ Ø®ØµÛص٠ÙÛ ØªÙا٠ب٠property دست ÛاÙت.
Namespace
ÛÚ© namespaceÂ Ø³Û Ø´Ø§Ø±Ù¾ ÙÙØ§Ù Ø³Ø·Ø Ø§Ø² اÙزÙØ§Û Ú©Ø¯ را ÙاÙÙد Package در جاÙا Ûا namespace âدر C++ ارائ٠ÙÛ Ú©Ùد Ú©Ù ÙÙاÙÛÙ Ù ÙÛÚÚ¯Û ÙØ§Û Ø¢Ù Ø¨Ø³Ûار Ùشاب٠package است.
Ø¯Ø³ØªØ±Ø³Û Ø¨Ù ØاÙظÙ
در زبا٠برÙاÙÙ ÙÙÛØ³Û C#Ø Ø§Ø² ÙشاÙگرÙØ§Û Ø¢Ø¯Ø±Ø³ ØاÙظ٠تÙÙا ÙÛ ØªÙا٠در بÙÙÚ© ÙاÛÛ Ø§Ø³ØªÙاد٠کرد ک٠ب٠عÙÙا٠unsafe عÙاÙت Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù Ø§Ùد ٠برÙاÙÙ ÙاÛÛ Ú©Ù Ú©Ø¯ÙØ§Û unsafe Ûا ÙااÙ٠دارÙد Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§ شد٠ÙÛاز ب٠ÙجÙزÙØ§Û ÙÙاسب دارÙد. بÛشتر Ø¯Ø³ØªØ±Ø³Û Ø¨Ù objectâ از طرÛ٠رÙرÙس اÛÙ٠ب٠object اÙجا٠ÙÛ Ø´Ùد Ú©Ù ÙÙÛØ´Ù Ûا ب٠ÛÚ© object زÙد٠اشار٠دارد Ûا Ø¯Ø§Ø±Ø§Û ÙÙدار null است. گرÙت٠رÙرÙس ب٠ÛÚ© object Ùرد٠(ÛÚ© object ک٠بازÛØ§Ø¨Û Ø´Ø¯Ù Ø§Ø³Øª) Ûا ÛÚ© بÙÙÚ© تصادÙÛ Ø§Ø² ØاÙظ٠غÛرÙÙک٠است. ÛÚ© ÙشاÙگر unsafe ÙÛ ØªÙاÙد ب٠ÛÚ© ÙÙÙÙ٠از ÙÙع ÙÙدارÛØ Ø¢Ø±Ø§ÛÙØ Ø±Ø´ØªÙ Ûا ÛÚ© بÙÙÚ© از ØاÙظ٠ک٠در ÛÚ© Stack âتخصÛص Ø¯Ø§Ø¯Ù Ø´Ø¯Ù Ø§Ø³ØªØ Ø§Ø´Ø§Ø±Ù Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯. Ú©Ø¯Û Ú©Ù Ø¨Ù Ø¹ÙÙا٠unsafe عÙاÙت Ú¯Ø°Ø§Ø±Û Ùشد٠است ÙÙÙز ÙÛ ØªÙاÙد ÙشاÙگرÙا را از طرÛÙ ÙÙع System.IntPtr ذخÛØ±Ù Ù Ø¯Ø³ØªÚ©Ø§Ø±Û Ú©ÙØ¯Ø Ø§Ùا ÙÙÛ ØªÙاÙد رÙرÙس Ø¢ÙÙا را ØØ°Ù Ú©Ùد.
ØاÙظ٠ÙدÛرÛت شد٠را ÙÙÛ ØªÙا٠ب٠طÙر ÙØ§Ø¶Ø Ø¢Ø²Ø§Ø¯ Ú©Ø±Ø¯Ø Ø¨Ù Ø¬Ø§Û Ø¢Ù Ø¨Ù ØµÙرت Ø®Ùدکار بازÛاÙت ÙÛ Ú¯Ø±Ø¯Ø¯. Garbage collection Ûا بازÛاÙت با برداشت٠ÙظÛÙ٠آزاد کرد٠ØاÙØ¸Ù Ø§Û Ú©Ù Ø¯Ûگر ÙÙرد ÙÛاز ÙÛست از رÙÛ Ø¯ÙØ´ برÙاÙÙ ÙÙÛØ³Ø ÙØ´Ú©Ù Ùشت ØاÙظ٠را رÙع ÙÛ Ú©Ùد.
استثÙا
استثÙائات ÚÚ© شد٠در زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ ÙجÙد ÙدارÙد (برخÙا٠جاÙا). اÛÙ ÛÚ© تصÙÛ٠عÙØ¯Û Ø¨Ø±Ø§Ø³Ø§Ø³ ÙØ´Ú©Ùات ÙÙÛاس پذÛØ±Û Ù ÙرÚ٠پذÛØ±Û Ø¨Ùد٠است.
ÚÙد رÛختÛ
برخÙا٠C++Ø Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û C# از Ùراثت ÚÙدگاÙ٠پشتÛباÙÛ ÙÙÛ Ú©ÙØ¯Ø Ø§Ùبت٠ÛÚ© Ú©Ùاس ÙÛ ØªÙاÙد از Ùر تعداد رابط Ú©Ø§Ø±Ø¨Ø±Û Ø§Ø³ØªÙاد٠کÙد. اÛ٠تصÙÛ٠تÙسط ÙعÙار ارشد اÛ٠زبا٠گرÙت٠شد تا از Ù¾ÛÚÛØ¯Ú¯Û Ø¬ÙÙÚ¯ÛØ±Û Ø´Ùد Ù ÙÙزÙÙات ÙعÙØ§Ø±Û Ø§Ø² طرÛÙ CLI ساد٠شÙÙد. ÙÙÙع ب٠کارگÛØ±Û ÚÙدÛ٠رابط Ú©Ø§Ø±Ø¨Ø±Û Ú©Ù Ø´Ø§ÙÙ ÛÚ© Ùتد با اÙØ¶Ø§Û ÙشابÙÛ ÙستÙØ¯Ø C#â اجاز٠ÙÛ Ø¯Ùد Ùر Ùتد را بست٠ب٠اÛÙک٠آ٠Ùتد از طرÛ٠کدا٠رابط Ú©Ø§Ø±Ø¨Ø±Û ÙراخÙاÙÛ Ø´Ø¯Ù Ø§Ø³ØªØ Ø¨Ú©Ø§Ø± بگÛرÛÙ Ûا ÙاÙÙد جاÙØ§Ø Ø§Ø¬Ø§Ø²Ù ÙÛ Ø¯Ùد ÛÚ© بار Ùتد را ب٠کار بگÛرÛ٠٠آ٠تÙÙا ÙراخÙاÙÛ Ø§Ø² طرÛÙ Ùر ÛÚ© از رابط ÙØ§Û Ú©Ø§Ø±Ø¨Ø±Û Ú©Ùاس باشد.
ÙرÚÙد برخÙا٠جاÙØ§Ø Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ از Ø³Ø±Ø¨Ø§Ø±Ú¯Ø²Ø§Ø±Û Ø¹ÙÙگرÙا پشتÛباÙÛ ÙÛ Ú©Ùد. تÙÙا راÛج ترÛ٠عÙÙگرÙØ§Û Ø³Ø±Ø¨Ø§Ø±Ú¯Ø²Ø§Ø±Û Ø´Ø¯Ù Ø¯Ø± C++ ÙÛ ØªÙاÙÙد در C# Ø³Ø±Ø¨Ø§Ø±Ú¯Ø²Ø§Ø±Û Ø´ÙÙد.
برÙاÙÙ ÙÙÛØ³Û ØªØ§Ø¨Ø¹Û
با اÛÙÚ©Ù C Sharp در ابتدا ÛÚ© زبا٠دستÙØ±Û Ø¨ÙØ¯Ø C# 2.0 پشتÛباÙÛ ÙØدÙØ¯Û Ø§Ø² برÙاÙÙ ÙÙÛØ³Û ØªØ§Ø¨Ø¹Û Ø§Ø² طرÛ٠تÙابع Ú©Ùاس ÛÚ© Ù Closure Ùا ب٠شک٠delegate ÙØ§Û ÙاشÙاس داشت. C# 3.0 پشتÛباÙÛ Ø§Ø² برÙاÙÙ ÙÙÛØ³Û ØªØ§Ø¨Ø¹Û Ø±Ø§ با ÙعرÙÛ ÛÚ© Ùاعد٠سبک Ø¨Ø±Ø§Û Ø¹Ø¨Ø§Ø±Øª ÙØ§Û LambdaØ ÙتدÙØ§Û Extension (ÛÚ© کاراÛÛ Ø¨Ø±Ø§Û ÙاÚÙÙ Ùا) Ù ÛÚ© Ùاعد٠list comprehension ب٠شک٠زبا٠query comprehensionØ Ú¯Ø³ØªØ±Ø´ داد.
سÛست٠ÙÙع راÛج
زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ ÛÚ© سÛست٠از ÙÙع ÛکپارÚ٠دارد. اÛ٠سÛست٠ÙÙع ÛکپارÚÙØ Ø³Ûست٠ÙÙع Ùشترک (Common Type System â CTS) Ùا٠دارد.
ÛÚ© سÛست٠ÙÙع ÛکپارÚ٠دÙاÙت بر اÛ٠دارد ک٠تÙا٠ÙÙع Ùا از جÙÙÙ Primitive ÙاÛÛ ÙاÙÙد اعداد صØÛØØ Ø²ÛرکÙØ§Ø³Û Ø§Ø² Ú©Ùاس System.Object ÙستÙد. Ø¨Ø±Ø§Û ÙثاÙØ Ùر ÙÙØ¹Û ÛÚ© Ùتد ToString() را ب٠ارث ÙÛ Ø¨Ø±Ø¯.
دست٠بÙØ¯Û ÙØ§Û ÙÙع ÙØ§Û Ø¯Ø§Ø¯Ù
CTS ÙÙع ÙØ§Û Ø¯Ø§Ø¯Ù Ø±Ø§ ب٠د٠دست٠تÙسÛÙ ÙÛ Ú©Ùد:
- ÙÙع ÙØ§Û ÙرجعÛ
- ÙÙع ÙØ§Û ÙÙدارÛ
ÙÙÙÙÙ ÙØ§Û ÙÙع ÙØ§Û ÙÙØ¯Ø§Ø±Û Ø¯Ø§Ø±Ø§Û ÙÙÛت Ø§Ø±Ø¬Ø§Ø¹Û Ûا ÙعÙاشÙØ§Ø³Û ÙÙاÛØ³Ù Ø§Ø±Ø¬Ø§Ø¹Û ÙÛستÙد â ÙÙاÛس٠ÙØ§Û Ø¨Ø±Ø§Ø¨Ø±Û Ù Ø¹Ø¯Ù Ø¨Ø±Ø§Ø¨Ø±Û Ø¨Ø±Ø§Û ÙÙع ÙØ§Û ÙÙدارÛØ ÙÙادÛر ØÙÛÙÛ Ø¯Ø§Ø¯Ù Ø±Ø§ در داخ٠ÙÙÙÙÙ Ùا ÙÙاÛس٠ÙÛ Ú©ÙÙØ¯Ø Ùگر اÛÙک٠عÙÙگرÙØ§Û ÙربÙØ·Ù Ø³Ø±Ø¨Ø§Ø±Ú¯Ø²Ø§Ø±Û Ø´Ø¯Ù Ø¨Ø§Ø´Ùد. ÙÙع ÙØ§Û ÙÙØ¯Ø§Ø±Û Ø¨Ø±Ú¯Ø±Ùت٠از System.ValueType ÙستÙØ¯Ø ÙÙÛØ´Ù ÛÚ© ÙÙدار Ù¾ÛØ´ Ùرض دارÙد Ù ÙÙÛØ´Ù ÙÛ ØªÙاÙÙد اÛجاد Ûا Ú©Ù¾Û Ø´ÙÙد. ÚÙد ÙØدÙدÛت دÛگر ÙÙع ÙØ§Û ÙÙØ¯Ø§Ø±Û Ø§Û٠است Ú©Ù ÙÙÛ ØªÙاÙÙد از ÛکدÛگر گرÙت٠شÙÙد (اÙا ÙÛ ØªÙاÙÙد رابط Ùا را ب٠کار Ú¯ÛرÙد) Ù ÙÙÛ ØªÙاÙÙد ÛÚ© constructor Ù¾ÛØ´ Ùرض ÙØ§Ø¶Ø (بدÙ٠پاراÙتر) داشت٠باشÙد. ÙÙÙÙÙ ÙØ§Û ÙÙع ÙØ§Û ÙÙØ¯Ø§Ø±Û ØªÙا٠ÙÙع ÙØ§Û primitive ÙاÙÙد int (ÛÚ© عدد صØÛØ Û³Û² بÛتÛ)Ø float (ÛÚ© عدد ÙÙÛز Ø´ÙاÙر IEEE 32 بÛتÛ)Ø char (ÛÚ© ÙاØد کد ÛÙÙÛکد Û±Û¶ بÛتÛ) Ù System.DateTime (ÛÚ© ÙÙط٠خاص در زÙا٠با دÙت ÙاÙÙثاÙÛ٠را Ø´ÙاساÛÛ ÙÛ Ú©Ùد) ÙستÙد. Ùثا٠ÙØ§Û Ø¯Ûگر شاÙÙ enum (enumerations) Ù struct (ساختارÙØ§Û ØªØ¹Ø±Û٠شد٠تÙسط کاربر) ÙستÙد.
Ø¨Ø±Ø¹Ú©Ø³Ø ÙÙع ÙØ§Û ÙØ±Ø¬Ø¹Û Ø¯Ø§Ø±Ø§Û ÙÙÙÙÙ ÙÙÛت Ø§Ø±Ø¬Ø§Ø¹Û ÙستÙد â Ùر ÙÙÙÙ٠از ÛÚ© ÙÙع ÙØ±Ø¬Ø¹Û Ø°Ø§ØªØ§ ÙتÙاÛز از دÛگر ÙÙÙÙÙ Ùا Ø§Ø³ØªØ ØØªÛ Ø§Ú¯Ø± داد٠ÙØ§Û Ø¯Ø§Ø®Ù Ùر د٠ÙÙÙÙÙ ÛÚ©Û Ø¨Ø§Ø´Ø¯. اÛÙ ÙÙضÙع در ÙÙاÛس٠ÙØ§Û Ù¾ÛØ´ Ùرض Ø¨Ø±Ø§Ø¨Ø±Û Ù Ø¹Ø¯Ù Ø¨Ø±Ø§Ø¨Ø±Û Ø¨Ø±Ø§Û ÙÙع ÙØ§Û ÙØ±Ø¬Ø¹Û ÙØ´ÙÙد است Ú©Ù Ø¨Ù Ø¬Ø§Û Ø¨Ø±Ø§Ø¨Ø±Û Ø³Ø§Ø®ØªØ§Ø±ÛØ Ø¨Ø±Ø§Ø¨Ø±Û Ø§Ø±Ø¬Ø§Ø¹Û Ø±Ø§ تست ÙÛ Ú©ÙÙد Ùگر اÛÙک٠عÙÙگرÙØ§Û ÙربÙØ·Ù Ø³Ø±Ø¨Ø§Ø±Ú¯Ø²Ø§Ø±Û Ø´Ø¯Ù Ø¨Ø§Ø´Ùد (ÙاÙÙد ÙÙرد System.String ). ب٠طÙر Ú©ÙÛØ ÙÙÛØ´Ù ÙÙÚ©Ù ÙÛست Ú©Ù ÛÚ© ÙÙÙÙ٠از ÙÙع ÙØ±Ø¬Ø¹Û Ø¨Ø³Ø§Ø²ÛÙ Ûا ÛÚ© ÙÙÙÙÙ ÙÙجÙد را Ú©Ù¾Û Ú©ÙÛÙ Ûا ÛÚ© ÙÙاÛس٠ÙÙØ¯Ø§Ø±Û Ø¨Û٠د٠ÙÙÙÙÙ ÙÙجÙد اÙجا٠دÙÛÙØ Ø§Ùبت٠ÙÙع ÙØ§Û ÙØ±Ø¬Ø¹Û Ø®Ø§ØµÛ ÙÛ ØªÙاÙÙد با ر٠کرد٠ÛÚ© Public Constructor Ûا بکارگÛØ±Û ÛÚ© رابط ÙتÙاظر (ÙاÙÙد ICloneable Ûا IComparable )Ø ÚÙÛ٠خدÙØ§ØªÛ Ø±Ø§ ارائ٠کÙÙد. Ùثا٠ÙاÛÛ Ø§Ø² ÙÙع ÙØ§Û ÙØ±Ø¬Ø¹Û Ø´Ø§ÙÙ object (Ú©Ùاس ÙبÙØ§Û ÙÙاÛÛ Ø¨Ø±Ø§Û ØªÙا٠دÛگر Ú©Ùاس ÙØ§Û C#)Ø System.String (ÛÚ© رشت٠از کاراکترÙØ§Û ÛÙÙÛکد) Ù System.Array (ÛÚ© Ú©Ùاس ÙبÙا Ø¨Ø±Ø§Û ØªÙا٠آراÛÙ ÙØ§Û C#) ÙستÙد.
Ùر د٠ÙÙع Ùاب٠تÙسع٠با ÙÙع ÙØ§Û ØªØ¹Ø±Û٠شد٠تÙسط کاربر ÙستÙد.
Boxingâ Ù Unboxing
BoxingØ ÙراÛÙد تبدÛÙ ÛÚ© Ø´Û ÙÙع ÙÙØ¯Ø§Ø±Û Ø¨Ù ÙÙدار ÛÚ© ÙÙع ÙØ±Ø¬Ø¹Û ÙتÙاظر است. عÙÙ Boxing در زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ ضÙÙÛ Ø§Ø³Øª.
عÙÙ UnboxingØ ÙراÛÙد تبدÛÙ ÙÙدار ÛÚ© ÙÙع ÙØ±Ø¬Ø¹Û (Ú©Ù ÙبÙا Boxed بÙدÙ) ب٠ÙÙدار ÛÚ© ÙÙع ÙÙØ¯Ø§Ø±Û Ø§Ø³Øª. عÙÙ Unboxing در C# ÙÛازÙÙد ÛÚ© تبدÛÙ ÙÙع ÙØ§Ø¶Ø Ø§Ø³Øª. ÛÚ© Ø´Û Boxed از ÙÙع T تÙÙا ÙÛ ØªÙاÙد ب٠ÛÚ© T (Ûا ÛÚ© Nullable T) Unbox Ø´Ùد.
ÙثاÙ:
intfoo=Û´Û²; // Value type. objectbar=foo; // foo is boxed to bar. intfoo2=(int)bar; // Unboxed back to value type. |
کتابخاÙÙ Ùا
Ùشخصات C Sharp ÛÚ© ÙجÙÙع٠کÙÛÙ٠از ÙÙع Ùا ٠کتابخاÙÙ ÙØ§Û Ú©Ùاس را Ùشخص کرد٠است ک٠از کاÙپاÛÙر اÙتظار ÙÛ Ø±Ùد داشت٠باشد. در عÙÙØ C Sharp در اکثر اÙÙات با بکارگÛØ±Û Ú©ÙÛ Ø²Ûرساخت زبا٠Ùشترک ÙÙرد استÙاد٠Ùرار ÙÛ Ú¯Ûرد ک٠ب٠عÙÙا٠ECMA-335 Common Language Infrastructure استاÙدارد شد٠است.
Ùثا٠Ùا
کد زÛر ÛÚ© برÙاÙ٠ساد٠C Sharp است Ú©Ù ÛÚ© Ùسخ٠کÙاسÛÚ© از Ùثا٠“Hello World” است:
using System; classProgram { staticvoidMain(string[]args) { Console.WriteLine("Hello, world!"); } } |
ÚÛØ²Û Ú©Ù Ø¯Ø± برÙاÙÙ ÙÙاÛØ´ داد٠ÙÛ Ø´ÙØ¯Ø Ø§Û٠است:
Ùر Ø®Ø·Ø Ø¯Ø§Ø±Ø§Û ÛÚ© Ùد٠است:
کد باÙا ب٠کاÙپاÛÙر ÙÛ Ú¯ÙÛد ک٠از System ب٠عÙÙا٠ÛÚ© Ù¾ÛØ´ÙÙد Ø¨Ø±Ø§Û ÙÙع ÙØ§Û Ø§Ø³ØªÙاد٠شد٠در کد ÙÙبع استÙاد٠کÙد. در اÛÙ ÙÙرد ÙÙØªÛ Ú©Ø§ÙپاÛÙر بعدا استÙاد٠از ÙÙع Console در کد ÙÙبع را ببÛÙØ¯Ø Ø³Ø¹Û ÙÛ Ú©Ùد ÛÚ© ÙÙع ب٠ÙاÙد console را ابتدا در ÙجÙÙع٠کÙÙÙÛ Ù Ø³Ù¾Ø³ در تÙا٠ÙجÙÙع٠ÙØ§Û Ø§Ø±Ø¬Ø§Ø¹ شدÙØ Ù¾Ûدا Ú©Ùد. در اÛÙ ÙÙØ±Ø¯Ø Ú©Ø§ÙپاÛÙر ÙÙÛ ØªÙاÙد ÚÙÛÙ ÙÙØ¹Û Ø±Ø§ Ù¾Ûدا Ú©ÙØ¯Ø Ø²Ûرا Ùا٠اÛÙ ÙÙع در ÙاÙع System.Console است. سپس کاÙپاÛÙر Ø³Ø¹Û ÙÛ Ú©Ùد با استÙاد٠از Ù¾ÛØ´ÙÙد system از عبارت usingÂ Ø ÛÚ© ÙÙع ب٠Ùا٠System.Console را Ù¾Ûدا Ú©Ùد ٠اÛ٠بار ÙÙÙÙ ÙÛ Ø´Ùد. عبارت using â ب٠برÙاÙÙ ÙÙÛس اجاز٠ÙÛ Ø¯Ùد Ø¨Ù Ø¬Ø§Û Ø§Ø³ØªÙاد٠از اساÙÛ Ú©Ø§Ù٠در تÙا٠ÙÙاÙØ¹Ø ØªÙا٠پÛØ´ÙÙدÙØ§Û ÙاÙزد Ø¨Ø±Ø§Û Ø§Ø³ØªÙاد٠در Ø·Û Ø¹Ù٠کاÙپاÛ٠را اعÙا٠کÙد.
کد باÙا ÛÚ© تعرÛÙ Ú©Ùاس است. Ùر ÚÛØ²Û Ú©Ù Ø¨Û٠کرÙØ´Ù ÙØ§Û Ø²Ûر Ø¨Ø§Ø´Ø¯Ø program را تÙصÛÙ ÙÛ Ú©Ùد.
staticvoidMain(string[]args) |
اÛÙ Ùتد class member را اعÙا٠ÙÛ Ú©Ùد Ú©Ù Ø§Ø¬Ø±Ø§Û Ø¨Ø±ÙاÙ٠شرÙع ÙÛ Ø´Ùد. .NET runtime Ùتد Main را ÙراخÙاÙÛ ÙÛ Ú©Ùد. (تÙجÙ: Main را ÙاÙÙد بÙÛÙ ÙتدÙا از Ø¬Ø§Û Ø¯ÛÚ¯Ø±Û ÙÙ ÙÛ ØªÙا٠ÙراخÙاÙÛ Ú©Ø±Ø¯. ÙØ«Ùا از ÛÚ© Ùتد دÛگر Ûا از program ). Ú©ÙÙÙ Ú©ÙÛØ¯Û static Ùتد را بدÙÙ ÙÙÙÙÙ Ø§Û Ø§Ø² program ÙØ§Ø¨Ù Ø¯Ø³ØªØ±Ø³Û ÙÛ Ú©Ùد. تÙا٠ÙÙاط ÙرÙØ¯Û Main از برÙاÙÙ Ú©ÙسÙ٠باÛد ب٠عÙÙا٠static اعÙا٠شÙÙد. در غÛر اÛ٠صÙرت برÙاÙ٠ب٠ÛÚ© ÙÙÙÙÙ ÙÛاز Ø®ÙاÙد Ø¯Ø§Ø´ØªØ Ø§Ùا Ùر ÙÙÙÙÙ Ø§Û Ø¨Ù ÛÚ© program ÙÛاز دارد. Ø¨Ø±Ø§Û Ø±Ùع اÛÙ ÙØ§Ø¨Ø³ØªÚ¯Û Ø¯Ø§ÛØ±Ù Ø§Û ØºÛر Ùاب٠ØÙØ Ø§Ú¯Ø± Ùتد staticMain ÙجÙد ÙØ¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ú©Ø§ÙپاÛÙرÙØ§Û C# ک٠برÙاÙÙ ÙØ§Û Ú©ÙسÙ٠را پردازش ÙÛ Ú©ÙÙد (ÙاÙÙد باÙا) ÛÚ© خطا گزارش ÙÛ Ú©ÙÙد. Ú©ÙÙÙ Ú©ÙÛØ¯Û void اعÙا٠ÙÛ Ú©Ùد Ú©Ù mainâÂ Ø¯Ø§Ø±Ø§Û ÙÙدار Ø¨Ø§Ø²Ú¯Ø´ØªÛ ÙÛست.
Console.WriteLine("Hello, world!"); |
اÛ٠خط از Ú©Ø¯Ø Ø®Ø±ÙØ¬Û Ø±Ø§ ÙÛ ÙÙÛسد. Console ÛÚ© Ú©Ùاس استاتÛÚ© در ÙØ¶Ø§Û Ùا٠system است. اÛÙ ÛÚ© رابط Ø¨Ø±Ø§Û ÙرÙدÛØ Ø®Ø±ÙØ¬Û Ù Ø¬Ø±Ûا٠ÙØ§Û Ø®Ø·Ø§ Ø¨Ø±Ø§Û Ø¨Ø±ÙاÙÙ ÙØ§Û Ú©ÙسÙÙ ÙراÙÙ ÙÛ Ú©Ùد. اÛ٠برÙاÙÙØ ÙÙد WriteLine  از consoleâ را ÙراخÙاÙÛ ÙÛ Ú©Ùد Ú©Ù ÛÚ© خط با آرگÙÙا٠رشت٠âHello World!â را رÙÛ Ú©ÙسÙÙ ÙÙاÛØ´ ÙÛ Ø¯Ùد.
ÛÚ© Ùثا٠از رابط Ú©Ø§Ø±Ø¨Ø±Û Ú¯Ø±Ø§ÙÛÚ©Û:
using System.Windows.Forms; classProgram { staticvoidMain(string[]args) { MessageBox.Show("Hello, World!"); System.Console.WriteLine("Is almost the same argument!"); } } |
اÛÙ Ùثا٠Ùشاب٠Ùثا٠ÙبÙÛ Ø§Ø³ØªØ Ø§Ùا Ø¨Ù Ø¬Ø§Û ÙÙشت٠پÛا٠âHello World!â رÙÛ Ú©ÙسÙÙØ ÛÚ© دÛاÙÙÚ¯ باکس تÙÙÛد ÙÛ Ú©Ùد ک٠آ٠پÛا٠را ÙÙاÛØ´ ÙÛ Ø¯Ùد.
استاÙØ¯Ø§Ø±Ø¯Ø³Ø§Ø²Û Ù ØµØ¯Ùر ÙجÙز
در Ø¢Ú¯Ùست Ø³Ø§Ù Û²Û°Û°Û±Ø Ø´Ø±Ú©Øª ÙاÛکرÙساÙØªØ ÙÛÙÙت پاکارد ٠اÛÙت٠با Ù٠ثبت Ùشخصات Ø¨Ø±Ø§Û Ø²Ø¨Ø§Ù Ø¨Ø±ÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ Ù ÙÙÚÙÛ٠زÛرساخت زبا٠Ùشترک در سازÙا٠استاÙدارد Ecma International را ØÙاÛت کردÙد. در دساÙبر Ø³Ø§Ù Û²Û°Û°Û±Ø Ø³Ø§Ø²Ùا٠ECMA Ùشخصات زبا٠ECMA-334 C# را ÙÙتشر کرد. زبا٠برÙاÙÙ ÙÙÛØ³Û Ø³Û Ø´Ø§Ø±Ù¾ در سا٠۲۰۰۳ تبدÛ٠ب٠استاÙدارد ISO شد. سازÙا٠ECMA در گذشت٠Ùشخصات ÙشابÙÛ Ø±Ø§ ب٠عÙÙا٠دÙÙÛÙ Ùسخ٠از C# در دساÙبر سا٠۲۰۰۲ ب٠تصÙÛب رساÙد٠بÙد.
در ÚÙØ¦Ù Ø³Ø§Ù Û²Û°Û°ÛµØ Ø³Ø§Ø²Ùا٠ECMA اÛ٠استاÙدارد ٠گزارش ÙØ§Û ÙÙÛ ÙربÙط٠را از طرÛÙ ÙراÛÙد Fast-Track در ISO/IEC JTC 1 ثبت کرد. اÛÙ ÙراÛÙد ÙعÙÙÙا Û¶ تا Û¹ Ùا٠زÙا٠ÙÛ Ø¨Ø±Ø¯.
تعرÛ٠زبا٠برÙاÙÙ ÙÙÛØ³Û C# Ù CLI تØت استاÙداردÙØ§Û ISO Ù ECMA استاÙØ¯Ø§Ø±Ø¯Ø³Ø§Ø²Û Ø´Ø¯Ù Ø§Ùد Ú©Ù ØÙاÛت ÙجÙز ÙÙØ·ÙÛ Ù Ø¨Ø¯Ù٠تبعÛض بر عÙÛ٠ادعاÙØ§Û Ø«Ø¨Øª اختراع ارائ٠ÙÛ Ú©ÙÙد.
شرکت ÙاÛکرÙساÙت پذÛرÙت٠است ک٠از تÙسع٠دÙÙدگا٠کد باز ب٠خاطر ÙÙض Ø٠اÙتÛاز Ø¨Ø®Ø´Û Ø§Ø² ÙرÛÙ Ùرک ک٠تØت Ù¾Ùشش OSP Ø§Ø³ØªØ Ø¨Ø±Ø§Û Ù¾Ø±ÙÚÙ ÙØ§Û ØºÛØ±ØªØ¬Ø§Ø±Û Ø´Ú©Ø§Ûت ÙÚ©Ùد. شرکت ÙاÛکرÙساÙت ÙÙÚÙÛ٠پذÛرÙت٠است Ú©Ù Ø٠اÙتÛازÙØ§Û ÙربÙØ· ب٠ÙØصÙÙات شرکت Novell را عÙÛÙ ÙشترÛا٠Novell ب٠اجرا ÙÚ¯Ø°Ø§Ø±Ø¯Ø Ø¨Ù Ø§Ø³ØªØ«ÙØ§Û ÙÛØ³ØªÛ Ø§Ø² ÙØصÙÙات ک٠بÙضÙØ Ø§Ø´Ø§Ø±Ù Ø§Û Ø¨Ù C#Ø .NET Ûا Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Novellâ از .NET ÙدارÙد. ÙرÚÙد شرکت Novell اظÙار دارد Ú©Ù Mono از ÙÛÚ ÛÚ© از Ø٠اÙتÛازÙØ§Û ÙاÛکرÙساÙت ØªØ¹Ø¯Û Ùکرد٠است. شرکت ÙاÛکرÙساÙت ÙÙÚÙÛ٠تÙاÙ٠کرد٠است Ú©Ù ØÙÙ٠ثبت اختراع ÙربÙØ· ب٠پÙاگÛÙ ÙرÙرگر Moonlightâ را ب٠اجرا Ùگذارد ک٠ب٠Mono ÙØ§Ø¨Ø³ØªÙ Ø§Ø³ØªØ Ø¯Ø±ØµÙØ±ØªÛ Ú©Ù Ø§Ø² طرÛ٠شرکت Novell تÙÛ٠شد٠باشد.
Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ùا
Ùرجع کاÙپاÛÙر Ø³Û Ø´Ø§Ø±Ù¾Ø Microsoft Visual C# است ک٠کد باز است.
شرکت ÙاÛکرÙساÙت ÙداÛت تÙسع٠کاÙپاÛÙر جدÛد C# کد باز Ù ÙجÙÙع٠ابزارÙاÛÛ Ú©Ù Ø§Ø³Ù Ø±Ùز آ٠در گذشت٠Roslyn بÙد٠است را برعÙد٠دارد. اÛ٠کاÙپاÛÙر ک٠کاÙÙا با کد ÙدÛرÛت شد٠(C Sharp) ÙÙشت٠شد٠است باز شد٠است ٠کاراÛÛ Ø¢Ù Ø¨Ù Ø¹ÙÙا٠API Ùا ر٠شد٠است. بÙابراÛ٠تÙسع٠دÙÙدگا٠را Ùادر کرد٠است تا ابزارÙØ§Û ÙاکتÙرگÛØ±Û Ùجدد ٠عÛب ÛØ§Ø¨Û Ø¨Ø³Ø§Ø²Ùد.
کاÙپاÛÙرÙØ§Û C Sharp دÛÚ¯Ø±Û ÙÙ ÙجÙد دارÙد ک٠اغÙب شاÙÙ ÛÚ© Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ø§Ø² زÛرساخت زبا٠Ùشترک ٠کتابخاÙÙ ÙØ§Û Ú©Ùاس .NET تا .NET 2.0 ÙستÙد.
- پرÙÚÙ Mono ÛÚ© کاÙپاÛÙر C Sharp کد باز را ÙراÙÙ ÙÛ Ú©Ùد Ú©Ù ÛÚ© Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ú©Ø§ÙÙا کد باز از زÛرساخت زبا٠Ùشترک است ٠شاÙ٠کتابخاÙÙ ÙØ§Û ÙرÛÙ Ùرک ÙÙرد ÙÛاز ب٠صÙØ±ØªÛ Ú©Ù Ø¯Ø± Ùشخصات ECMA Ø¢Ùد٠است Ù ÙÙÚÙÛÙ ÛÚ© Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û ØªÙرÛبا کاÙ٠شد٠از کتابخاÙÙ ÙØ§Û Ú©Ùاس .NET Ø§Ø®ØªØµØ§ØµÛ ÙاÛکرÙساÙت تا .NET 3.5 ÙستÙد. Ø¨Ø±Ø§Û Mono 2.6 ÙÙÙز ÙÛÚ Ø·Ø±ØÛ Ø¨Ø±Ø§Û Ø¨Ù Ú©Ø§Ø±Ú¯ÛØ±Û WPF ÙجÙد Ùدارد. WF Ø¨Ø±Ø§Û Ø§Ùتشار Ø¨Ø¹Ø¯Û Ø¨Ø±ÙاÙ٠رÛØ²Û Ø´Ø¯Ù Ø§Ø³Øª ٠تÙÙا Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û ÙØ§Û Ø¬Ø²Ø¦Û Ø§Ø² LINQ to SQL Ù WCF ÙجÙد دارد.
- پرÙÚÙ DotGNU (اکÙÙÙ ÙتÙÙ٠شد٠است) ÙÛز ÛÚ© کاÙپاÛÙر کد باز C# ÙراÙ٠کرد٠بÙد ک٠تÙرÛبا ÛÚ© Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ú©Ø§Ù٠از زÛرساخت زبا٠Ùشترک ٠شاÙ٠کتابخاÙÙ ÙØ§Û ÙرÛÙ Ùرک ÙÙرد ÙÛاز ب٠صÙØ±ØªÛ Ú©Ù Ø¯Ø± Ùشخصات ECMA Ø¢Ùد٠اÙد ٠زÛرÙجÙÙØ¹Ù Ø§Û Ø§Ø² Ø¨Ø±Ø®Û Ø§Ø² باÙÛ ÙاÙد٠کتابخاÙÙ ÙØ§Û Ú©Ùاس .NET Ø§Ø®ØªØµØ§ØµÛ ÙاÛکرÙساÙت تا .NET 2.0 بÙد (Ø¢ÙÙاÛÛ Ú©Ù ÙستÙد Ùشد٠٠در Ùشخصات ECMA شاÙÙ Ùشد٠اÙØ¯Ø Ø§Ùا در تÙزÛع ÙرÛÙ .NET استاÙدارد ÙاÛکرÙساÙت شاÙ٠شد٠اÙد).
- پرÙÚÙ Rotor ÙاÛکرÙساÙت (در Øا٠Øاضر “زÛرساخت ب٠اشتراک گذاشت٠شد٠ÙÙبع زبا٠Ùشترک” ÙاÙÛد٠ÙÛ Ø´Ùد) (Ø¯Ø§Ø±Ø§Û ÙجÙز تÙÙا Ø¨Ø±Ø§Û Ùصار٠آÙÙØ²Ø´Û Ù ØªØÙÛÙØ§ØªÛ Ø§Ø³Øª) ÛÚ© Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ø¨Ø§ ÙÙبع Ùشترک از CLR runtime Ù ÛÚ© کاÙپاÛÙر C Sharp ٠زÛرÙجÙÙØ¹Ù Ø§Û Ø§Ø² کتابخاÙÙ ÙØ§Û ÙرÛÙ Ùرک زÛرساخت زبا٠Ùشترک در Ùشخصات ECMA را ÙراÙÙ ÙÛ Ú©Ùد (تا C# 2.0 ٠تÙÙا رÙÛ ÙÛÙدÙز XP پشتÛباÙÛ ÙÛ Ø´Ùد).
ÙÙابع: ÙÛÚ©Û Ù¾Ø¯Ûا اÙÚ¯ÙÛØ³Û Ø ÙبساÛت Microsoft Ø Ø¢Ø±Ûا گستر Ù â¦
تÙصÛÙ ÙÛ Ú©ÙÛ٠دÙر٠ÙØ§Û Ø¬Ø§Ùع ÙØ§Ø±Ø³Û Ùرتبط با اÛÙ ÙÙضÙع آرÛاگستر را ÙشاÙد٠کÙÛد:
صÙر تا صد Ø¢ÙÙزش برÙاÙÙ ÙÙÛØ³Û Ø¯Ø± ÛÙÙÛØªÛ Ø¨Ø§ Ø³Û Ø´Ø§Ø±Ù¾ â Ù¾Ú© Û±
صÙر تا صد Ø¢ÙÙزش برÙاÙÙ ÙÙÛØ³Û Ø¯Ø± ÛÙÙÛØªÛ Ø¨Ø§ Ø³Û Ø´Ø§Ø±Ù¾ â Ù¾Ú© Û²
â صÙر تا صد Ø¢ÙÙزش ÛÙÙÛØªÛ Ø¯Ù Ø¨Ø¹Ø¯Û – Ù¾Ú© Û±
â صÙر تا صد Ø¢ÙÙزش ÛÙÙÛØªÛ Ø¯Ù Ø¨Ø¹Ø¯Û – Ù¾Ú© Û²
â صÙر تا صد Ø¢ÙÙزش ÛÙÙÛØªÛ Ø³Ù Ø¨Ø¹Ø¯Û Ù¾Ú© Û±
â صÙر تا صد Ø¢ÙÙزش ÛÙÙÛØªÛ Ø³Ù Ø¨Ø¹Ø¯Û Ù¾Ú© Û²
â صÙر تا صد Ø¢ÙÙزش زاÙارÛÙ
â ÙØصÙÙات Ø¢ÙÙØ²Ø´Û Ùرتبط با برÙاÙÙ ÙÙÛسÛ
تÙج٠: ÙطاÙب Ù ÙÙاÙات ÙبساÛت آرÛاگستر تÙاÙا تÙسط تÛ٠تاÙÛ٠٠ترجÙ٠ساÛت ٠با زØÙت ÙراÙا٠ÙراÙ٠شد٠است . Ùذا تÙÙا با ذکر ÙÙبع آرÛا گستر Ù ÙÛÙÚ© ب٠ÙÙÛ٠صÙØ٠اÙتشار اÛÙ ÙطاÙب بÙاÙاÙع است !