C# хэлний тухай

Өнөө үед мэдээллийн технологийн салбарт эрэлттэй, эрчимтэй хөгжүүлэлттэй, хамгийн хүчирхэг хэлүүдийн нэг бол програмчлалын C# хэл юм. Хэл дээр десктопийн жижигхэн програмаас эхлээд өдөрт сая сая хэрэглэгчид үйлчлүүлдэг том хэмжээний веб портал, сервисүүд гээд маш олон төрлийн програмуудыг боловсруулж байна.
C# залуу хэл биш бөгөөд .NET платформ хөгжлийн урт замыг туулсан. 2002 оны 2-р сард Microsoft Visual Studio .NET -тэй зэрэг хэлний анхны хувилбар гарсан.

C# нь С -тэй төрлийн буюу C++, Java -тай төстэй бичлэгийн дүрэмтэй. Иймээс та эдгээр хэлүүдийн нэгийг мэддэг бол C# -ийг сурахад төвөггүй.
C# обьект хандлагат хэл бөгөөд энэ чиглэлд C++, Java -аас олон зүйлийг авсан. Жишээ нь C# полиморфизм, удамшилт, статик төрөлжүүлэлтийг дэмждэг. ОХ аргачлал том хэмжээний асуудлыг шийдэхийн зэрэгцээ уян хатан, өргөтгөн хөгжүүлэх боломжтой програмыг болосруулах боломжийг олгодог. C# -ийг идэвхтэй хөгжүүлж байгаа бөгөөд шинэ хувилбар бүрд сонирхолтой боломжууд ихээр бий болсоор байгаа. 

.NET платформийн үүрэг.

C# -ийг ярихад .NET платформийн (Windows Forms, WPF /Windows Presentation Foundation/, ASP.NET, Xamarin) технологи гэж үзэх нь цөөнгүй ба эсрэгээрээ .NET -ийн тухай ярихад түүнийг C# гэж үзэх гээд байдаг. Эдгээр ойлголтууд холбоотой хэдий ч тэдгээрийг адилтган үзэх нь буруу. C# -хэлийг .NET фреймворктой ажиллахад зориулан тусгайлан болосруулсан ч .NET ойлголт бол нилээд өргөн.   
.NET платфоормийг Билл Гейтс Microsoft компаний бүтээгдхүүнүүдийн хамгийн сайн нь гэж хэлсэн байдаг. Үнэхээр ч .NET фреймворк програм боловсруулах хүчирхэг хэрэгсэл. Түүний дараах үндсэн шинжүүдийг онцолж болохоор.

  • Олон хэлүүдийг дэмждэг. Платформийн суурь Common Language Runtime (CLR) буюу хэлний ерөнхий орчин учраас үүний ачаар .NET фреймворк C# -аас гадна VB.NET, C++, F# зэрэг хэлүүд болон .NET -тэй холбоотой бусад хэлүүдийн төрөл бүрийн ажиллагааг дэмждэг. Жишээ нь Delphi.NET. Компиляц хийгдэхэд эдгээр хэлүүд дээрх код .NET платформийн ассемблер маягийн CIL (Common Intermediate Language) гэх ерөнхий хэлээр багцлагддаг. Иймээс тодорхой нөхцөлд нэг програмийн модулиудийг тусдаа хэлүүд дээр боловсруулж болно.
  • Платформ хоорондын зохицол. .NET нь платформын шилжилттэй. (зарим нэгэн хязгаарлалт бий.) Жишээ нь платформийн сүүлийн хувилбар одоогоор .NET 6 орчин үеийн ихэнх Windows, MacOS, Linux үйлдлийн системийг дэмждэг. .NET дээр төрөл бүрийн технологийг хослуулан ашиглан C# хэл дээр Windows, MacOS, Linux, Android, iOS үйлдлийн сисийн програмийг боловсруулж болно.
  • Классуудын хүчирхэг сантай. .NET дэмждэг бүх хэлүүдэд нэгдсэн классуудын сантай. C# хэлээр текст засварлагч, чат эсхүл нарийн веб сайт гээд ямарч програмийг боловсруулахдаа бид .NET -ийн классуудын сантай харьцана.
  • Төрөл бүрийн технологиуд. Хэлний ерөнхий орчин CLR, классуудын суурь сан нь боловсруулагчид ямар нэгэн програмыг боловсруулахдаа ашиглаж болох бүхэл бүтэн технолгийн суурь болдог. Жишээ нь, өгөгдлийн сантай ажиллахад ADO.NET , Entity Framework Core, баялаг интерфейстэй график програм зохиоход WPF, WinUI харин энгийн график програмд Windows Forms технологиуд зорилагдсан байхад үйлдлийн систем хоорондын мобил болон декстопийн програмд Xamarin/MAUI харин веб сайт болон веб програмд ASP.NET гэх мэтээр байх жишээтэй.
  • Бүтээмж. .NET 6 дээрх веб програм олон тооны тестийн хэрэгслүүдийн үзүүлэлтээр бусад технологиудаар боловсруулсан веб програмуудаас олон төрөлд тасархай түрүүлж байгаа нь батлагдсан. .NET 6 -ийн програмууд өндөр бүтээмжээрээ ялгардаг.

Үүнээс гадна .NET фреймворк, C# хэлний автомат хог цэвэрлэлтийг дурдах хэрэгтэй. Энэ нь ихэнх тохиолдолд бид санах ойн чөлөөлөлтөд санаа зовох хэрэггүй гэсэн үг. Хэлний ерөнхий орчин CLR өөрөө хог цэвэрлэгчийг дуудан санах ойг цэвэрлэнэ.

.NET фреймворк /Framework/ .NET 6

.NET удаан хугацаанд .NET Framework нэрээр голдуу Windows -д зориулагдан хөгжиж байсан. Энэ платформийн сүүлийн .NET Framework 4.8 хувилбар 2019 онд гараад хөгжүүлэлт зогссон.
2014 оноос Microsoft төрөл бүрийн үйлдлийн системд зориулагдсан .NET Core платформийг хөгжүүлж эхэлсэн. .NET Core платформ өөртөө .NET Framework -ийн бүх боломжуудыг агуулан шинэ функционалуудтай болох ёстой байсан. Энэ платформийн .NET Core 1, .NET Core 2, .NET Core 3, .NET 5 хувилбаруудыг Microsoft гаргаж байгаад одоогоор сүүлийн хувилбар нь .NET 6 байгаа. Иймээс .NET Framework нь голлон Windows -д зориулагдсан бол .NET 6 олон үйлдлийн системд зориулагдсан гэдгийг ялган ойлгох хэрэгтэй.        

Удирлагатай ба удирлагагүй код.

C# дээр боловсруулагдсан програмыг удирдлагатай код (managed code) гэж нэрлэх нь элбэг. Энэ юу гэсэн үг вэ? гэвэл тухайн програмыг .NET платформ дээр суурилан үүсгэсэн тул програмыг ачааллах, шаардлагатай бол санах ойг цэвэрлэдэг ажиллагаанууд хэлний ерөнхий орчноор /CLR/ удирдагдана гэсэн үг. Гэхдээ C#, VB.NET эсхүл F# шиг CIL (Common Intermediate Language) ерөнхий хэл рүү биш ердийн машиний код руу хөрвүүлэгддэг жишээ нь C++ хэл дээр зохиогдсон програмууд бий. Энэ тохиолдолд .NET програмыг удирдахгүй. Гэсэн хэдий ч .NET платформ удирдлагагүй кодтой харилцан ажиллах боломжийг өгдөг.   

JIT-компиляц

C# -ийн код CIL (Common Intermediate Language) ерөнхий хэл рүү exe эсхүл dll өргөтгөлтэй файлд багцлагдан хөрвүүлэгдэнэ. CIL бол .NET -ийн виртуал машиний "дээд түвшингийн ассемблер" хэл юм. Ийм програмуудыг ажиллуулахаар ачааллахад JIT компиляц (Just-In-Time) хийгдэн машиний код руу шилжүүлэн дараа нь ажиллуулдаг. Програм олон тооны бүтцийг агуулсан том хэмжээний байж болох ч тухайн үед хандаж байгаа хэсгийг л машиний код руу хөрвүүлдэг. Хэрэглэгч програмын өөр хэсэгт хандахад тэр хэсгийн кодийг CIL -ээс машиний код руу хөрвүүлнэ. Гэхдээ нэгэнт хөрвүүлэгдсэн кодийн хэсэг програмийн ажиллагааг дуустал хадгалагдах тул энэ нь бүтээмжийг /хурд/ дээшлүүлдэг.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 477 Төлбөртэй

C# -д бусад програмчлалын хэлүүдэд хэрэглэгдэг ихэнх операторуудыг ашигладаг. Үйлдэл гэдэг нь оролцогчид (операндууд) дээр тодорхой үйлчлэл хийхийг хэлнэ. Оролцогчоор хувьсагч эсхүл ямар нэгэн утга (жишээ нь тоо) байж болно. Үйлдэл нэгдмэл (унар) буюу нэг оролцогч (операнд) дээр, бинар буюу хоёр оролцогч дээр, тернар буюу гурван оролцогчийнх гэж байдаг.

  Нээгдсэн тоо: 337 Бүртгүүлэх

Нийтлэлээр графикийн хэвүүдийн /GUI pattern/ түүхийг авч үзье. Боловсруулалтын графикийн хэвүүдийг 30 гаруй жилийн туршид боловсруулж байгаа бөгөөд энэ хугацаанд гарч ирсэн бүх хэвүүдийн талаар авч үзэх нь боломжгүй зүйл. Иймээс сүүлийн 30 жилд бий болсон үндсэн хоёр чиг хандлагын талаар авч үзээд энэхүү хоёр хандлага эцэстээ Silverlight ийн MVVM ба WPF паттерн болон хувирсанг харцгаая. Хэрвээ та графикийн хэвүүдийн түүхийн талаарх мэдээллийг сонирхож байвал Мартин Фаулерын - GUI Architectures нийтлэлийг уншаарай.

  Нээгдсэн тоо: 432 Төлбөртэй

Литерал нь өөрчлөгдөхгүй утгыг илэрхийлнэ. (хааяа тэдгээрийг тогтмолууд гэж ч нэрлэдэг.) Литералуудыг хувьсагчид утгаар өгч болдог. Логик, бүхэл тоон, бодит тоон, тэмдэгт, мөрийн литералууд байж болно. null түлхүүр үг тусдаа литералийг илэрхийлнэ.

Логикийн литералууд

true (үнэн), false (худал) гэсэн хоёр логик тогтмол бий.

Console.WriteLine(true);
Console.WriteLine(false);

  Нээгдсэн тоо: 1222 Бүртгүүлэх

Entity Framework сэдвийн хүрээнд нийтлэгдэж буй энэхүү хичээлд бид Linq технологид хүсэлтийг sql төрлийн бичлэгтэй төстэй байдлаар бичин ашиглах боломжийн тухай үзнэ. Өмнөх хичээлүүдэд ашиглаж байсан програмын кодын харилцагчдын мэдээллийг авах GetCustomersEF() аргыг доорх байдлаар өөрчлөн өгье.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 58

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 90

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 85

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 203

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 245

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 254

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 297

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 285

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 369

 
Энэ долоо хоногт

функцийн интервал дахь хамгийн бага утгыг ол.

Нээгдсэн тоо : 855

 

Зөв дөрвөн өнцөгт пирамидын өндөр 4. Хажуу ирмэг суурийн хавтгайд 30 градусын өнцгөөр налсан бол пирамидын хажуу ирмэгийг ол.

Нээгдсэн тоо : 1848

 

бол M·N=?

Нээгдсэн тоо : 1161