1-bo‘lim
C# bilan tanishuv
C# nima uchun yaratilgan, uni kim yozgan, "sharp" belgisi qayerdan kelgan, .NET nima va birinchi dastur qanday ishlaydi.
Ushbu bo‘lim mundarijasi
C# (o'qilishi "si sharp") - Microsoft yaratgan dasturlash tili. Bugun
unda Windows dasturlari, veb saytlar, Unity o'yinlari va mobil ilovalar
yoziladi.
U C++ ning tezligi bilan Java ning qulayligini birlashtirish uchun o'ylab topilgan va yigirma yildan ortiq vaqt davomida doimiy rivojlanib kelmoqda.
Birinchi dastur #
Console.WriteLine("Salom, dunyo!");
Salom, dunyo!
Bittagina qator. Bu yuqori darajali ko'rsatmalar (top-level statements) deb ataladi va C# 9 dan beri mavjud.
Ilgari eng oddiy dastur ham shunday ko'rinardi:
using System;
namespace Salomlashuv
{
class Dastur
{
static void Main(string[] args)
{
Console.WriteLine("Salom, dunyo!");
}
}
}
Salom, dunyo!
Ikkalasi ham bir xil ishlaydi. Kompilyator birinchi variantni ko'rganda
Main metodini o'zi yozib qo'yadi - siz uni yozmaysiz, xolos.
Yangi shakl qisqa, lekin eski shaklni tanish shart: internetdagi
misollarning aksariyati, kitoblar va ish joyingizdagi loyihalar hali
ham class va Main bilan yozilgan.
Bu darslikda qisqa shakldan foydalanamiz, lekin 9-bo'limda sinflarga o'tganimizda to'liq shakl qaytib keladi.
C# ni kim yaratgan? #
Anders Hejlsberg (1960-)
C# ning bosh me'mori. Daniyalik dasturchi. C# dan oldin u Turbo Pascal ni yozgan - 1983-yilda bir o'zi. Keyin Delphi ning bosh me'mori bo'lgan.
1996-yilda Microsoft'ga o'tdi va 2000-yilda C# ni taqdim etdi. Keyinchalik u yana bir mashhur tilni yaratdi - TypeScript. Ya'ni bitta odam to'rt avlod dasturchilarining asboblarini yasagan.
Bu musiqa belgisi - diez (♯). Musiqada diez notani yarim ton ko'taradi. Ya'ni "C sharp" - "C dan bir pog'ona yuqori" degani.
Ikkinchi o'qilishi ham bor: # belgisiga diqqat bilan qarasangiz, u
to'rtta + belgisidan tuzilgandek ko'rinadi. Ya'ni C++ ++ -
"C++ dan ham ikki qadam oldinga".
Klaviaturada haqiqiy diez belgisi bo'lmagani uchun oddiy panjara
belgisi (#) ishlatiladi. Rasmiy nomi esa C Sharp deb yoziladi.
Qisqacha tarix #
| Versiya | Yil | Nima qo'shildi |
|---|---|---|
| C# 1.0 | 2002 | Tilning o'zi, .NET Framework bilan birga |
| C# 2.0 | 2005 | Generiklar, nullable turlar, iteratorlar |
| C# 3.0 | 2007 | LINQ, lambda ifodalar, var |
| C# 5.0 | 2012 | async / await |
| C# 6.0 | 2015 | Satr interpolatsiyasi, nameof |
| C# 8.0 | 2019 | Nullable havola turlari, switch ifodasi |
| C# 9.0 | 2020 | record, yuqori darajali ko'rsatmalar |
| C# 12 | 2023 | Asosiy konstruktorlar, to'plam ifodalari |
| C# 14 | 2025 | extension a'zolari, field kalit so'zi |
C# va .NET - ikki xil narsa #
Bu chalkashtiriladigan joy, shuning uchun darhol aniqlashtiramiz.
C++ da kod to'g'ridan-to'g'ri protsessor buyruqlariga aylanadi - shuning uchun Windows uchun qurilgan dastur Linux'da ishlamaydi.
C# da esa kompilyator IL (oraliq til) hosil qiladi. IL hech qaysi protsessorga tegishli emas. Dastur ishga tushganda JIT (Just-In-Time) kompilyatori uni o'sha paytdagi protsessor buyruqlariga aylantiradi.
Natijada bitta .dll fayl Windows'da ham, Linux'da ham, ARM
protsessorli Mac'da ham ishlaydi. Tarjima bir marta, ishga tushganda
bo'ladi - shuning uchun dastur birinchi soniyada biroz sekinroq
ishlaydi, keyin tezlashadi.
C# qayerda ishlatiladi #
| Soha | Nima bilan |
|---|---|
| Veb backend | ASP.NET Core |
| Ish stoli dasturlari | WPF, WinForms, Avalonia |
| O'yinlar | Unity - dunyodagi eng mashhur o'yin dvigateli |
| Mobil ilovalar | .NET MAUI |
| Bulut xizmatlari | Azure, mikroxizmatlar |
| Sun'iy intellekt | ML.NET |
Agar o'yin yaratishni xohlasangiz, C# ni bilish deyarli majburiy. Unity dvigatelida skriptlar faqat C# da yoziladi.
Steam'dagi indi o'yinlarning katta qismi, mobil o'yinlarning esa aksariyati aynan Unity'da qilingan.
Tilning uchta xususiyati #
1. Turlar qat'iy tekshiriladi #
int yosh = 25;
string ism = "Husanboy";
Console.WriteLine($"{ism} - {yosh} yosh");
Console.WriteLine($"Ikki yildan keyin: {yosh + 2}");
Husanboy - 25 yosh
Ikki yildan keyin: 27
Agar yosh ga satr berishga urinsangiz, dastur ishga tushmaydi -
kompilyator xatoni oldindan topadi. Bu Python va JavaScript'dan asosiy
farqi.
2. Xotira o'zi tozalanadi #
C++ da ajratilgan xotirani o'zingiz qaytarasiz. C# da buni axlat yig'uvchi (garbage collector) bajaradi: keraksiz obyektlarni topib, xotirani bo'shatadi.
Bu qulaylik, lekin bepul emas - 11-bo'limda uning narxini ko'ramiz.
3. Standart kutubxona juda katta #
Ko'p narsani o'zingiz yozish shart emas:
string[] shaharlar = { "Namangan", "Andijon", "Samarqand", "Toshkent" };
Array.Sort(shaharlar);
Console.WriteLine(string.Join(", ", shaharlar));
Console.WriteLine($"Eng uzun nom: {shaharlar.MaxBy(s => s.Length)}");
Andijon, Namangan, Samarqand, Toshkent
Eng uzun nom: Samarqand
Saralash, birlashtirish va eng uzunini topish - uch qator. Ularning hammasi tilning o'zida bor.
Har bir csharp bloki .NET 10 da haqiqatan kompilyatsiya qilingan
va ishga tushirilgan. Ostidagi output bloki - dasturning o'zi bergan
natija, qo'lda yozilgan emas.
Ya'ni nusxa ko'chirib ishga tushirsangiz, aynan shu natijani olasiz. Agar boshqacha chiqsa - bu bobdagi xato emas, sizning muhitingizda farq bor degani. Keyingi bo'limda muhitni to'g'ri sozlaymiz.
- C# va .NET farqini o'z so'zingiz bilan yozing.
- "#" belgisining ikkita ma'nosini ayting.
- Anders Hejlsberg C# dan oldin va keyin qaysi mahsulotlarni yaratgan?
- IL nima va nega kerakligini bir abzatsda tushuntiring.
- 2016-yilda nima o'zgargani va bu nega muhimligini yozing.
- Yuqori darajali ko'rsatmalar va
Mainmetodi orasidagi farqni ayting. - C# ishlatiladigan uchta sohani sanang.
- C# ning Python'dan asosiy farqini yozing.
- Axlat yig'uvchi nima qilishini tushuntiring.
- Unity haqida qidirib, unda qaysi til ishlatilishini tasdiqlang.
Xulosa #
- C# - Microsoft yaratgan, qat'iy turlarga ega zamonaviy til.
- Uni Anders Hejlsberg boshchiligidagi jamoa yaratgan; u avval Turbo Pascal va Delphi, keyin TypeScript ni ham yozgan.
#- musiqadagi diez belgisi: "C dan bir pog'ona yuqori".- C# - til, .NET - uni ishga tushiradigan platforma.
- Kod avval IL ga, ishga tushganda esa JIT orqali protsessor buyruqlariga aylanadi - shuning uchun bitta fayl hamma joyda ishlaydi.
- 2016-yilda .NET ochiq kodli va ko'p platformali bo'ldi.
- Zamonaviy C# da eng oddiy dastur bir qator -
Mainni kompilyator o'zi yozadi.
Keyingi bo'limda .NET SDK ni o'rnatib, birinchi loyihani yaratamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.