Дт интерфейсини ишлаб чиқишда


Versiya Til spetsifikatsiyasi



Download 406,4 Kb.
bet23/23
Sana03.01.2022
Hajmi406,4 Kb.
#316595
1   ...   15   16   17   18   19   20   21   22   23
Bog'liq
C##

Versiya

Til spetsifikatsiyasi

Sana

.NET

Visual Studio

Ekma

ISO/IEC

Microsoft

C# 1.0

2002 yil dekabr

2003 yil aprel

2002 yil yanvar

2002 yil yanvar

.NET Framework 1.0

Visual Studio .NET 2002

C# 1.1
C# 1.2

2003 yil oktyabr

2003 yil aprel

.NET Framework 1.1

Visual Studio .NET 2003

C# 2.0 [42]

2006 yil iyun

2006 yil sentyabr

2005 yil sentyabr [c]

2005 yil noyabr

.NET Framework 2.0
.NET Framework 3.0

Visual Studio 2005
Visual Studio 2008

C# 3.0 [43]

Yo'q

2007 yil avgust

2007 yil noyabr

.NET Framework 2.0 (LINQdan tashqari) [44]

.NET Framework 3.0 (LINQdan tashqari) [44]


.NET Framework 3.5

Visual Studio 2008

C# 4.0 [45]

2010 yil aprel

2010 yil aprel

.NET Framework 4

Visual Studio 2010

C# 5.0 [46]

2017 yil dekabr

2018 yil dekabr

2013 yil iyun

2012 yil avgust

.NET Framework 4.5

Visual Studio 2012
Visual Studio 2013

C# 6.0 [47]

Yo'q

Qoralama

2015 yil iyul

.NET Framework 4.6
.NET Core 1.0
.NET Core 1.1

Visual Studio 2015

C# 7.0 [48] [49]

Spetsifikatsiya taklifi

2017 yil mart

.NET Framework 4.7

Visual Studio 2017 versiyasi 15.0

C# 7.1 [50]

Spetsifikatsiya taklifi

2017 yil avgust

.NET Core 2.0

Visual Studio 2017 versiyasi 15.3 [51]

C# 7.2 [52]

Spetsifikatsiya taklifi

2017 yil noyabr




Visual Studio 2017 versiyasi 15.5 [53]

C# 7.3 [54]

Spetsifikatsiya taklifi

2018 yil may

.NET Core 2.1
.NET Core 2.2
.NET Framework 4.8

Visual Studio 2017 versiyasi 15.7 [53]

C# 8.0 [55]

Spetsifikatsiya taklifi

2019 yil sentyabr

.NET Core 3.0
.NET Core 3.1

Visual Studio 2019 versiyasi 16.3 [56]

C# 9.0 [57]

Spetsifikatsiya taklifi

2020 yil sentyabr

.NET 5.0

Visual Studio 2019 versiyasi 16.8 [56]

Sintaksis [ tahrirlash ]

Asosiy maqola: C# sintaksisi

Shuningdek qarang: Sintaksis (dasturlash tillari)

C# tilining asosiy sintaksisi C, C++ va Java kabi C uslubidagi boshqa tillarnikiga o'xshaydi, xususan:



  • Nuqtali vergullar gapning oxirini belgilash uchun ishlatiladi.

  • Ibodatlarni guruhlash uchun jingalak qavslar ishlatiladi. Bayonotlar odatda usullarga (funktsiyalarga), usullar sinflarga va sinflar nomlar maydoniga guruhlanadi .

  • O'zgaruvchilar tenglik belgisi yordamida tayinlanadi , lekin ikkita ketma-ket tenglik belgisi yordamida solishtiriladi .

  • Kvadrat qavslar massivlar bilan ishlatiladi , ularni e'lon qilish va ulardan birida berilgan indeksda qiymat olish uchun.

Ajratib turuvchi xususiyatlar [ tahrir ]

Shuningdek qarang: C# va Java ni solishtirish

C# tilini C, C++ va Java dan ajratib turadigan ba'zi bir muhim xususiyatlari quyidagilardir:



Portativlik tahrirlash ]

Dizayni bo'yicha C# - bu umumiy til infratuzilmasini  (CLI) to'g'ridan-to'g'ri aks ettiruvchi dasturlash tili . [58] Uning ichki turlarining aksariyati CLI ramkasi tomonidan amalga oshirilgan qiymat turlariga mos keladi. Biroq, til spetsifikatsiyasi kompilyatorning kod yaratish talablarini bildirmaydi: ya'ni C# kompilyatori Umumiy tilning ishlash vaqtini maqsad qilib qo'yishi yoki Common Intermediate Language (CIL) yaratishi yoki boshqa har qanday maxsus formatni yaratishi kerakligini bildirmaydi. Nazariy jihatdan, C# kompilyatori an'anaviy C++ yoki Fortran kompilyatorlari kabi mashina kodini yaratishi mumkin .



Yozilmoqda tahrir ]

C# kalit so'zi bilan kuchli, bilvosita kiritilgan o'zgaruvchilar deklaratsiyasini varva kalit so'zdan new[]so'ng to'plamni ishga tushiruvchi bilan bilvosita terilgan massivlarni qo'llab-quvvatlaydi .

C # qat'iy qo'llab-quvvatlaydi Boolean ma'lumotlar turini , boolwhileva kabi shartlarni qabul qiluvchi bayonotlar mantiqiy tip kabi operatorni ifamalga oshiradigan tur ifodasini talab qiladi true. C++ ham mantiqiy tipga ega bo'lsa-da, u butun sonlarga va undan erkin o'zgartirilishi mumkin, va int yoki ko'rsatgich bo'lishga imkon beruvchi if (a)faqat aboolga aylantiriladigan talab kabi ifodalar a. C# bu "to'g'ri yoki noto'g'ri ma'noli butun son" yondashuviga ruxsat bermaydi, chunki dasturchilarni aniq qaytaradigan iboralardan foydalanishga majburlash boolba'zi turdagi dasturlash xatolarining oldini oladi, masalan if (a = b)=tenglik o'rniga topshiriqdan foydalanish ==).

C# C++ ga qaraganda xavfsizroq . Sukut bo'yicha yagona yashirin konvertatsiyalar xavfsiz deb hisoblanganlardir, masalan, butun sonlarni kengaytirish. Bu kompilyatsiya vaqtida, JIT paytida va ba'zi hollarda ish vaqtida amalga oshiriladi. Mantiqiy va butun sonlar o'rtasida ham, ro'yxatga olish a'zolari va butun sonlar o'rtasida (har qanday sanab o'tilgan turga bilvosita aylantirilishi mumkin bo'lgan 0 dan tashqari) yashirin konvertatsiya sodir bo'lmaydi. Foydalanuvchi tomonidan aniqlangan har qanday konvertatsiya aniq yoki yashirin deb belgilanishi kerak, C++ nusxa ko'chirish konstruktorlari va konversiya operatorlaridan farqli o'laroq , sukut bo'yicha ikkalasi ham yashirindir.

C# umumiy turdagi kovariatsiya va kontravariatsiyani aniq qo'llab-quvvatlaydi , C++ dan farqli o'laroq, virtual usullarda qaytish turlarining semantikasi orqali kontravariatsiyani ma'lum darajada qo'llab-quvvatlaydi.

Ro'yxatga olish a'zolari o'z doirasiga joylashtiriladi .

C# tili global o'zgaruvchilar yoki funktsiyalarga ruxsat bermaydi. Barcha usullar va a'zolar sinflar ichida e'lon qilinishi kerak. Umumiy sinflarning statik a'zolari global o'zgaruvchilar va funktsiyalarni almashtirishi mumkin.

Mahalliy o'zgaruvchilar , C va C++ dan farqli o'laroq, o'rab turgan blokning o'zgaruvchilarini soya qila olmaydi .

Metadasturlash tahrirlash ]

Metadasturlash bir necha usul bilan amalga oshirilishi mumkin:


  • Framework API yordamida aks ettirish

  • Ifodalar daraxti [59] til xususiyati kodni mavhum sintaksis daraxti sifatida ifodalaydi , bu erda har bir tugun tekshirilishi yoki bajarilishi mumkin bo'lgan ifodadir. Bu ish vaqtida bajariladigan kodni dinamik o'zgartirish imkonini beradi. Ifodalar daraxti tilga bir oz gomoiklik kiritdi .

  • Atribut tili xususiyati assambleyalar , a'zolar va turlar kabi maydon yoki kod blokiga biriktirilgan metama'lumotlar bo'lib, Java'dagi izohlarga ekvivalentdir . Atributlar kompilyator uchun ham, aks ettirish orqali dasturiy jihatdan ham mavjud . Ushbu atributlarning aksariyati GCC va VisualC++ platformasiga bog'liq bo'lgan preprotsessor direktivalarining funksionalligini takrorlaydi.

  • Manba generatorlar, [60] ning xususiyati Roslyn C # sintaksik , derleme vaqti metaprogramming beradi. Kompilyatsiya jarayonida ishlab chiquvchilar kompilyatsiya qilinayotgan kodni tekshirishlari mumkin (kompilyator API yordamida) va kompilyatsiyaga qo'shilishi mumkin bo'lgan yangi C# manba fayllarini yaratishi mumkin.

Usul va funksiyalar tahrirlash ]

C# tilidagi usul - bu sinf xususiyatining qiymatni ushlab turish qobiliyati emas, balki funktsiya (ko'rsatmalar ketma-ketligi) sifatida chaqirilishi mumkin bo'lgan sinf a'zosi. C++ va ANSI C kabi sintaktik jihatdan o‘xshash boshqa tillarda bo‘lgani kabi, usulning imzosi quyidagi tartibda o‘z ichiga olgan deklaratsiyadir: har qanday ixtiyoriy kirish kalit so‘zlari (masalan, private), uning qaytish turining aniq spetsifikatsiyasi (masalan, int, yoki kalit so‘z).voidagar qiymat qaytarilmasa), usulning nomi va nihoyat, har biri parametr turidan, uning rasmiy nomidan va ixtiyoriy ravishda hech biri taqdim etilmaganda foydalaniladigan standart qiymatdan iborat boʻlgan vergul bilan ajratilgan parametr spetsifikatsiyalarining qavs ichiga olingan ketma-ketligi. Qaytish qiymati yoki tayinlash orqali sinf xususiyatini oddiygina oladigan yoki o'rnatadigan usullar kabi ba'zi o'ziga xos usullar to'liq imzoni talab qilmaydi, lekin umumiy holatda sinfning ta'rifi uning usullarining to'liq imzo deklaratsiyasini o'z ichiga oladi.

C++ kabi va Java-dan farqli o'laroq, C# dasturchilari virtualusullarni pastki sinflar tomonidan bekor qilinishiga ruxsat berish uchun scope modifikator kalit so'zidan foydalanishlari kerak . [61]

C# tilidagi kengaytma usullari dasturchilarga statik usullardan xuddi sinfning metodlar jadvalidagi usullar kabi foydalanishga imkon beradi, bu esa dasturchilarga ushbu ob'ekt va uning hosilalarida mavjud bo'lishi kerak deb hisoblaydigan ob'ektga usullarni qo'shish imkonini beradi.

Turi dynamicJavaScript-ga o'xshash usul qo'ng'iroqlari va ish vaqti ob'ekti tarkibiga ruxsat beruvchi ish vaqti usulini ulash imkonini beradi .

C# kalit so'zi orqali kuchli terilgan funksiya ko'rsatkichlarini qo'llab-quvvatlaydi delegate. Qt ramkasining psevdo-C++ signali va uyasi singari, C# da nashr qilish-obuna bo'lish uslubidagi hodisalarni o'rab turgan semantika mavjud, ammo C# buning uchun delegatlardan foydalanadi.

C# synchronizedatributi orqali Java-ga o'xshash usul qo'ng'iroqlarini taklif qiladi [MethodImpl(MethodImplOptions.Synchronized)]va kalit so'z orqali o'zaro eksklyuziv qulflarni qo'llab-quvvatlaydi lock.

Mulk tahrirlash ]

C# xususiyatlariga ega sinflarni qo'llab-quvvatlaydi . Xususiyatlar qo'llab-quvvatlovchi maydonga ega oddiy yordamchi funktsiyalar bo'lishi mumkin yoki qabul qiluvchi va sozlash funktsiyalarini amalga oshirishi mumkin.

C# 3.0 dan boshlab avtomatik amalga oshiriladigan xususiyatlarning sintaktik shakari mavjud bo'lib, [62] bu erda aksessuar ( oluvchi ) va mutator (setter) sinfning bitta atributidagi operatsiyalarni qamrab oladi .

Nomlar maydoni tahrirlash ]

AC# namespaceJava packageyoki C++ bilan bir xil darajadagi kod izolyatsiyasini ta'minlaydi, qoida va xususiyatlarga juda o'xshash . Nom maydonlarini "foydalanish" sintaksisi bilan import qilish mumkin. [63]namespacepackage



Xotiraga kirish tahrirlash ]

C #, xotira manzili DMOZ faqat maxsus, deb belgilangan blok ichida foydalanish mumkin xavfli , [64] ishlatish uchun ruxsat tegishli shart xavfli kod bilan va dasturlarni. Ko'pgina ob'ektlarga kirish xavfsiz ob'ekt havolalari orqali amalga oshiriladi, ular har doim "jonli" ob'ektga ishora qiladi yoki aniq belgilangan null qiymatiga ega; "o'lik" ob'ektga (axlat yig'ilgan) yoki tasodifiy xotira blokiga havolani olish mumkin emas. Xavfli ko'rsatgich axlat yig'ilgan ob'ektlar, massiv, satr yoki stek bilan ajratilgan xotira blokiga havolalarni o'z ichiga olmaydigan "boshqarilmaydigan" qiymat turi misoliga ishora qilishi mumkin. Xavfli deb belgilanmagan kod ko'rsatkichlarni System.IntPtrturi bo'yicha saqlashi va boshqarishi mumkin ,

Boshqariladigan xotirani aniq bo'shatib bo'lmaydi; Buning o'rniga, u avtomatik ravishda axlat yig'iladi. Chiqindilarni yig'ish dasturchini ko'p hollarda kerak bo'lmagan xotirani bo'shatish uchun javobgarlikdan ozod qilish orqali xotiraning oqishi muammosini hal qiladi . Ob'ektlarga havolalarni talab qilinganidan uzoqroq saqlaydigan kod hali ham zarur bo'lganidan ko'ra ko'proq xotiradan foydalanishi mumkin, ammo ob'ektga yakuniy havola chiqarilgandan so'ng, xotira axlat yig'ish uchun mavjud bo'ladi.

Istisno tahrirlash ]

Dasturchilar uchun bir qator standart istisnolar mavjud. Standart kutubxonalardagi usullar ba'zi holatlarda muntazam ravishda tizim istisnolarini chiqaradi va istisnolar oralig'i odatda hujjatlashtiriladi. Maxsus istisno sinflari kerak bo'lganda muayyan holatlar uchun maxsus ishlov berishga imkon beruvchi sinflar uchun aniqlanishi mumkin. [65]



Belgilangan istisnolar C# da mavjud emas (Java'dan farqli o'laroq). Bu masshtablilik va versiya imkoniyatlariga asoslangan ongli qaror edi. [66]

Polimorfizm tahrirlash ]

C++ dan farqli o'laroq , C# bir nechta merosni qo'llab-quvvatlamaydi , garchi sinf har qanday miqdordagi " interfeyslarni " (to'liq mavhum sinflar) amalga oshirishi mumkin . Bu asoratlarni oldini olish va CLI boʻylab arxitektura talablarini soddalashtirish maqsadida tilning yetakchi arxitektorining dizayn qarori edi.

Xuddi shu nomdagi usulni o'z ichiga olgan bir nechta interfeyslarni amalga oshirishda va bir xil turdagi parametrlarni bir xil tartibda (ya'ni bir xil imzo ) olishda, Java ga o'xshash bo'lsa , C# bitta usulga barcha interfeyslarni va kerak bo'lganda maxsus usullarni qamrab olishga imkon beradi. har bir interfeys.

Biroq, Java-dan farqli o'laroq, C# operatorni ortiqcha yuklashni qo'llab-quvvatlaydi . [67]

Birlashtirilgan til so'rovi (LINQ) tahrirlash ]

C# tili .NET Framework orqali LINQ dan foydalanish imkoniyatiga ega . Ob'ektda IEnumerableinterfeys o'rnatilgan bo'lsa , dasturchi turli xil ma'lumotlar manbalarini so'rashi mumkin . Bunga XML hujjatlari, ADO.NET maʼlumotlar toʻplami va SQL maʼlumotlar bazalari kiradi. [68]

C# da LINQ-dan foydalanish Intellisense-ni qo'llab-quvvatlash, kuchli filtrlash qobiliyatlari, kompilyatsiya xatolarini tekshirish qobiliyati bilan tip xavfsizligi va turli manbalar bo'yicha ma'lumotlarni so'rashda izchillik kabi afzalliklarni beradi . [69] C# va LINQ bilan ishlatilishi mumkin bo'lgan bir nechta turli xil til tuzilmalari mavjud va ular so'rov ifodalari, lambda ifodalari, anonim turlar, bilvosita kiritilgan o'zgaruvchilar, kengaytma usullari va ob'ektni ishga tushiruvchilardir. [70]

Funktsional dasturlash tahrirlash ]

Garchi birinchi navbatda imperativ til bo'lsa-da, C# 2.0 birinchi darajali funktsiyalar va anonim delegatlar ko'rinishidagi yopilishlar orqali funktsional dasturlash uchun cheklangan yordamni taklif qildi . [71] C# 3.0 lambda ifodalari uchun engil sintaksis, [72] kengaytma usullari (modullar uchun imkoniyat) va "so'rovni tushunish" tili ko'rinishidagi ro'yxatni tushunish sintaksisini joriy qilish bilan funktsional dasturlash uchun kengaytirilgan qo'llab-quvvatlash . C# 7.0 odatda funktsional tillarda topiladigan kortejlar, mahalliy funksiyalar va naqsh moslashuvi kabi xususiyatlarni qo'shadi . [73] C# 9.0 asosan o'zgarmas ma'lumotlar modellarini yaxshiroq qo'llab-quvvatlash uchun yaratilgan [74] yozuv xususiyatini taqdim etadi .

Umumiy turdagi tizim [ tahrirlash ]

C# da yagona turdagi tizim mavjud . Ushbu birlashtirilgan turdagi tizim Common Type System (CTS) deb ataladi . [75]

Birlashtirilgan tipdagi tizim barcha turlar, jumladan, butun sonlar kabi ibtidoiylar sinfning pastki sinflari ekanligini anglatadi . Misol uchun, har bir tur bir usulni meros qilib oladi . System.ObjectToString()

Ma'lumotlar turlari toifalari tahrir ]

CTS ma'lumotlar turlarini ikki toifaga ajratadi: [75]



  1. Malumot turlari

  2. Qiymat turlari

Qiymat turlari misollarida na havola identifikatori, na havolali taqqoslash semantikasi mavjud emas. Qiymat turlari uchun tenglik va tengsizlik solishtirish, tegishli operatorlar haddan tashqari yuklanmagan bo'lsa, misollardagi haqiqiy ma'lumotlar qiymatlarini solishtiradi. Qiymat turlari dan olinadi , har doim standart qiymatga ega va har doim yaratilishi va nusxalanishi mumkin. Qiymat turlari bo'yicha ba'zi boshqa cheklovlar shundaki, ular bir-biridan kelib chiqa olmaydi (lekin interfeyslarni amalga oshirishi mumkin) va aniq standart (parametrsiz) konstruktorga ega bo'lmaydi. Qiymat turlariga misollar (imzolangan 32 bitli butun son), (32 bitli IEEE suzuvchi nuqtali raqam), (16 bitli Unicode kod birligi) va (vaqtning ma'lum bir nuqtasini aniqlaydi ) kabi barcha ibtidoiy turlar misol bo'ladi . nanosekundlik aniqlik bilan). Boshqa misollarSystem.ValueTypeintfloatcharSystem.DateTimeenum(hisoblashlar) va struct(foydalanuvchi tomonidan belgilangan tuzilmalar).

Bundan farqli o'laroq, mos yozuvlar turlari mos yozuvlar identifikatori tushunchasiga ega, ya'ni har ikkala nusxadagi ma'lumotlar bir xil bo'lsa ham, mos yozuvlar turining har bir nusxasi har bir boshqa misoldan ajralib turadi. Bu mos keladigan operatorlar haddan tashqari yuklanmagan bo'lsa (masalan, ) tizimli tenglikni emas, balki mos yozuvlarni sinovdan o'tkazadigan mos yozuvlar turlari uchun standart tenglik va tengsizlik taqqoslashlarida aks etadi . Ba'zi operatsiyalar har doim ham mumkin emas, masalan, mos yozuvlar turining namunasini yaratish, mavjud namunani nusxalash yoki ikkita mavjud misolda qiymat solishtirishni amalga oshirish. Muayyan mos yozuvlar turlari ommaviy konstruktorni ochish yoki tegishli interfeysni (masalan, yoki kabi ) amalga oshirish orqali bunday xizmatlarni taqdim etishi mumkin . Malumot turlariga misollarSystem.StringICloneableIComparableobject(barcha boshqa C# sinflari uchun yakuniy tayanch sinf), (Unicode belgilar qatori) va (barcha C# massivlari uchun asosiy sinf). System.StringSystem.Array

Ikkala turdagi toifalar ham foydalanuvchi tomonidan belgilangan turlar bilan kengaytiriladi.

Boks va qutidan chiqarish tahrirlash ]

Boks - bu qiymat tipidagi ob'ektni mos keladigan mos yozuvlar turining qiymatiga aylantirish operatsiyasi. [75] C# da boks yashirindir.

Unboxing - mos yozuvlar turidagi qiymatni (ilgari qutilangan) qiymat turi qiymatiga aylantirish operatsiyasi. [75] C# da qutidan chiqarish aniq turdagi castni talab qiladi . T tipidagi qutilangan ob'ektni faqat T (yoki null bo'ladigan T) ga chiqarish mumkin. [76]

Misol:


int foo = 42 ; // Qiymat turi.

ob'ekt satri = foo ; // foo bar uchun qutilangan.

int foo2 = ( int ) bar ; // Qiymat turiga qaytarilgan quti.

Kutubxonalar [ tahrirlash ]

C# spetsifikatsiyasi kompilyator mavjud bo'lishini kutgan minimal turlar va sinf kutubxonalarini batafsil bayon qiladi. Amalda, C# ko'pincha ECMA-335 Umumiy til infratuzilmasi (CLI) sifatida standartlashtirilgan Umumiy til infratuzilmasi (CLI) ning ba'zi bir amalga oshirilishi bilan ishlatiladi .

Standart CLI spetsifikatsiyalariga qo'shimcha ravishda, qo'shimcha funktsiyalarni ta'minlash uchun .NET ramka kutubxonalari ustiga qurilgan ko'plab tijorat va jamoat sinf kutubxonalari mavjud. [77]

C# .NET kutubxonalari va ramkalari ro'yxatiga kiritilgan har qanday kutubxonaga qo'ng'iroq qilish mumkin .

Misollar [ tahrir ]



Salom dunyo tahrirlash ]

Quyida C# 9 da kiritilgan yuqori darajadagi bayonotlar xususiyatidan foydalangan holda klassik " Salom dunyo " misolining versiyasi juda oddiy C# dasturi keltirilgan: [78]



tizimdan foydalanish ;
Konsol . WriteLine ( "Salom, dunyo!" );

C# 8 yoki undan pastroq shaklda yozilgan kod uchun dasturning kirish nuqtasi mantig'i tur ichidagi Main usulida yozilishi kerak:



tizimdan foydalanish ;
// Klassik "Salom dunyo" dastur

sinfining versiyasi Dastur

{


statik void Main ( string [] args )

{


Console . WriteLine ( "Salom, dunyo!" );

}


}

Ushbu kod konsol oynasida ushbu matnni ko'rsatadi:

Salom Dunyo!

Har bir qatorning maqsadi bor:



tizimdan foydalanish ;

Yuqoridagi qator Systemnomlar maydonidagi barcha turlarni import qiladi . Misol uchun, Consolemanba kodida keyinroq qo'llaniladigan sinf Systemnomlar maydonida aniqlanadi , ya'ni u turning to'liq nomini kiritmasdan foydalanish mumkin (bu nomlar maydonini o'z ichiga oladi).



// Klassik "Salom dunyo" dasturining versiyasi

Bu satr sharhdir; u dasturchi(lar) uchun kodni tavsiflaydi va hujjatlashtiradi.



sinf dasturi

Yuqorida sinf uchun sinf ta'rifi mavjud Program. Qavslar juftligi orasidagi hamma narsa shu sinfni tavsiflaydi.

{

...


}

Jingalak qavslar kod blokining chegaralarini belgilaydi. Bu birinchi navbatda, ular Programsinfning boshlanishi va oxirini belgilaydilar .



statik void Asosiy ( string [] args )

Bu dastur bajarilishini boshlaydigan sinf a'zosi usulini e'lon qiladi. .NET ish vaqti Mainusulni chaqiradi . Java dan farqli o'laroq , Mainmetodga publickalit so'z kerak emas , bu esa kompilyatorga usulni istalgan joydan istalgan sinf tomonidan chaqirilishi mumkinligini aytadi. [79] Yozish yozishga teng . Statik kalit so'z bir misol holda usul yaxshi qiladi . Har bir konsol ilovasining kirish nuqtasi e'lon qilinishi kerak, aks holda dastur ning nusxasini talab qiladi , lekin har qanday misol dasturni talab qiladi. Ushbu hal qilib bo'lmaydigan aylana bog'liqligini oldini olish uchun C# kompilyatorlari konsol ilovalarini qayta ishlaydistatic void Main(string[] args)private static void Main(string[] args)ProgramMainstaticProgram(yuqoridagi kabi) usul bo'lmasa, xato haqida xabar bering . Kalit so'z, deb e'lon hech ega qaytish qiymati . static MainvoidMain

Konsol . WriteLine ( "Salom, dunyo!" );

Ushbu qator chiqishni yozadi. nomlar maydonidagi Consolestatik sinfdir System. U konsol ilovalari uchun standart kirish, chiqish va xato oqimlariga interfeysni taqdim etadi. Dastur konsolda argument, string bilan chiziqni ko'rsatadigan Consoleusulni chaqiradi . WriteLine"Hello, world!"



GUI tahrirlash ]

GUI misol:



tizimdan foydalanish ;

System.Windows.Forms dan foydalanish ; sinf Dasturi { statik bekor Asosiy () { MessageBox . Ko'rsatish ( "Salom, dunyo!" ); Konsol . WriteLine ( "Deyarli bir xil argument!" ); } }

Bu misol avvalgi misolga o'xshaydi, faqat u "Salom, dunyo!" xabarini o'z ichiga olgan dialog oynasini yaratadi. uni konsolga yozish o'rniga.



Rasmlar tahrirlash ]

Yana bir foydali kutubxona - bu System.Drawingkutubxona bo'lib, u tasvirlarni dasturiy ravishda chizish uchun ishlatiladi. Masalan:



tizimdan foydalanish ;

System.Drawing dan foydalanish ; umumiy sinf Misol { umumiy statik rasm img ; statik bekor Asosiy () { img = Rasm . FromFile ( "Image.png" ); } }

Bu "Image.png" da saqlangan rasmga o'xshash tasvirni yaratadi.

Standartlashtirish va litsenziyalash [ tahrirlash ]

2001 yil avgust oyida Microsoft , Hewlett-Packard va Intel Ecma International standartlar tashkilotiga C# va umumiy til infratuzilmasi (CLI) uchun spetsifikatsiyalarni taqdim etishga homiylik qildilar . 2001 yil dekabr oyida ECMA ECMA-334 C# til spetsifikatsiyasini chiqardi . C# tili 2003 yilda ISO standartiga aylandi (ISO/IEC 23270:2003 - Axborot texnologiyalari — Dasturlash tillari — C#). ECMA ilgari 2002 yil dekabr oyida C# tilining 2-nashri sifatida ekvivalent spetsifikatsiyalarni qabul qilgan edi. 2005 yil iyun oyida ECMA C# spetsifikatsiyasining 3-nashrini tasdiqladi va ECMA-334 ni yangiladi. Qo'shimchalar qisman sinflarni, anonim usullarni, null bo'lmagan turlarni va generiklarni (C++ shablonlariga biroz o'xshash ) o'z ichiga oladi. 2005 yil iyul oyida ECMA ISO/IEC JTC 1 ga Fast-Track jarayoni orqali standartlar va tegishli TRlarni taqdim etdi. Bu jarayon odatda 6-9 oy davom etadi.

C # tili ta'rifi va CLI ostida standartlaþtýrýlýr ISO va ajmayn ta'minlash standartlari oqilona va nodavlat kamsituvchi litsenziya patent so'rash himoya.

Microsoft dastlab OSP tomonidan qamrab olingan ramka qismi uchun notijorat loyihalarda patentlarni buzganliklari uchun ochiq kodli ishlab chiquvchilarni sudga bermaslikka rozi bo'ldi. [80] Microsoft, shuningdek, Novell mahsulotlariga tegishli patentlarni Novellning pul toʻlaydigan mijozlariga [81] nisbatan qoʻllamaslikka rozi boʻldi , bundan tashqari, C#, .NET yoki Novellning .NET ( The Mono Project ) amalga oshirishi aniq koʻrsatilmagan mahsulotlar roʻyxati bundan mustasno. . [82] Biroq, Novell Mono hech qanday Microsoft patentlarini buzmasligini ta'kidladi. [83] Microsoft, shuningdek, Moonlight brauzeri plaginiga tegishli patent huquqlarini tatbiq etmaslik to'g'risida maxsus shartnoma tuzdi, bu Mono-ga bog'liq, agar u Novell orqali olingan bo'lsa. [84]

O'n yil o'tgach, Microsoft C# uchun bepul, ochiq manbali va o'zaro faoliyat platforma vositalarini, ya'ni Visual Studio Code , .NET Core va Roslyn vositalarini ishlab chiqishni boshladi . Mono Microsoft kompaniyasiga Microsoft sho'ba korxonasi Xamarin loyihasi sifatida qo'shildi .

Amalga oshirish [ tahrirlash ]

Microsoft ochiq manbali C# kompilyatorlari va asboblar to'plamini ishlab chiqishda etakchilik qilmoqda . Birinchi kompilyator Roslyn oraliq tilga (IL) kompilyatsiya qiladi, ikkinchisi RyuJIT [85] JIT (shunchaki o'z vaqtida) kompilyatori bo'lib, u dinamik bo'lib, tez optimallashtirish va kompilyatsiya qiladi. IL protsessorning old qismi uchun mahalliy kodga. [86] RyuJIT ochiq manba va C++ tilida yozilgan. [87] Roslyn butunlay boshqariladigan kodda (C#) yozilgan, ochilgan va funksionallik API sifatida paydo boʻlgan. Bu ishlab chiquvchilarga refaktoring va diagnostika vositalarini yaratish imkonini beradi. [4] [88]Rasmiy amalga oshirishning ikkita tarmog'i .NET Framework (yopiq manba, faqat Windows) va .NET Core (ochiq kodli, o'zaro faoliyat platformalar); ular oxir-oqibat bitta ochiq manbali dasturga birlashdilar: .NET 5.0. [89] .NET Framework 4.6 da yangi JIT kompilyatori avvalgisini almashtirdi. [85] [90]

Boshqa C# kompilyatorlari (ulardan ba'zilari umumiy til infratuzilmasi va .NET sinf kutubxonalarini amalga oshirishni o'z ichiga oladi ):



  • Microsoft homiyligidagi Mono loyihasi ochiq manbali C# kompilyatorini, CLI ning to'liq ochiq kodli amalga oshirilishini (shu jumladan, ECMA spetsifikatsiyasida ko'rinadigan kerakli ramka kutubxonalarini) va NET sinf kutubxonalarini deyarli to'liq amalga oshirishni ta'minlaydi. .NET Framework 3.5 uchun.

  • Elements dan vositasi zanjir RemObjects .NET ning uchun C # kodini tuzadigan RemObjects C #, o'z ichiga oladi Common Intermediate til , Java bytecode , kakao , Android bytecode , WebAssembly Windows, MacOS va Linux uchun, va ona mashina kodi.

  • DotGNU loyiha (hozir To'xtatilgan), shuningdek, qolgan Microsoft mulkiy .NET sinf ba'zi ochiq-manba C # sintaksik, ular Ajmayn spetsifikatsiyasi paydo bo'lib zarur baza kutubxonalar, shu jumladan, mushtarak til infratuzilmani deyarli to'liq amalga oshirish hamda kichik majmuini taqdim .NET 2.0 gacha bo'lgan kutubxonalar (hujjatlanmagan yoki ECMA spetsifikatsiyasiga kiritilmagan, ammo Microsoft standart .NET Framework tarqatilishiga kiritilgan).

Unity o'yin qidiruvi , uning asosiy tili sifatida C # foydalanadi. Godot o'yin qidiruvi Microsoft $ 24,000 bir hadya qilish uchun ixtiyoriy C # moduli shukr amalga oshirildi. [91]
Download 406,4 Kb.

Do'stlaringiz bilan baham:
1   ...   15   16   17   18   19   20   21   22   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish