Нэрийн глобал орон зай

Төслийн кодийн файл дахь ямар нэгэн нэрийн орон зайг ашиглах хэрэгтэй бол ашиглах гэж буй бүх файлд түүнийг анхдагчаар холбон оруулах хэрэгтэй болно.
Жишээ нь төсөлд кодийн гурван файл байлаа

гэж үзье.

Base.cs файлд Base орон зайд

namespace Base;
class Company
{
    string title;
    public Company(string title) => this.title = title;
    public void Print() => Console.WriteLine($"Компан: {title}");
}

Company класс тодорхойлогдсон. Харин Person.cs файлд тодорхойлогдсон Person класс

using Base;
 
class Person
{
    string name;
    Company company;
    public Person(string name, Company company)
    {
        this.name = name;
        this.company = company;
    }
    public void Print()
    {
        Console.WriteLine($"Нэр: {name}");
        company.Print();
    }
}

Company классийг ашиглана. Person класст Company классийг ашиглахын тулд түүний орон зайн нэрийг using Base гэж оруулан ирсэн. Program.cs класст Person, Company классуудыг ашиглана.

using Base;
 
Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

Энд Company классийг ашиглахын тулд дахиад л using Base гэж нэийн орон зайг оруулан ирнэ.
Base (эсхүл ямар нэгэн өөр) орон зайг оруулан ирэх файлууд олон байвал энэ нь тийм ч эвтэйхэн биш нь тодорхой. .NET 6 -д үүнд зориулагдсан нэрийн глобал орон зай гэсэн ойлголтыг оруулан ирсэн. Үүний тулд аль нэгэн файлд зохих директивийг бичихэд хангалттай.

global using оруулан_ирэх_нэрийн_орон_зай;

Тэгвэл Program.cs файлыг дараах

global using Base;
 
Company microsoft = new("Microsoft");
Person tom = new("Tom", microsoft);
tom.Print();

байдлаар өөрчилье. Одоо Base нэрийн орон зай төслийн бүх кодийн файлд холбогдох учраас Person.cs файлаас using Base; мөрийг хасаж болно.

Глобал нэрийн орон зайг тусдаа файлд тодорхойлох

Дээр дурдсан аргаар нэрийн глобал орон зайг аль нэгэн файлд заан өгөх нь бас дутагдалтай. Program.cs файлд заагаад байж болох ч нэрийн глобал орон зайг тусд нь тодорхойлоод төслийн аль нэгэн газарт оруулан ирэх нь бүр ч энгийн. Үүний тулд Visual Studio 2022C# -ийн кодийн шинэ файлыг нэмээд түүнд төсөлд оруулан ирэх нэрийн орон зайнуудыг тодорхойлно. Жишээ нь төсөлд GlobalUsings.cs нэртэй файл нэмээд түүнд

зурагт үзүүлсэн агуулгыг оруулан өгье. Одоо энэхүү нэрийн орон зайн багцууд төслийн бүх файлд автоматаар холбогдох тул бид global using Base; -ийг өөр ямар нэгэн файлд оруулан өгөх

албагүй болсон.

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

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

Өнөөдөр C# хэлний нилээд хүчирхэг, нарийн Reflection технологийн талаар үргэлжлүүлэн авч үзье. Хичээл Reflection I -ийн үргэлжлэл тул та эхлээд өмнөх хичээлийг судлаарай.

Мета өгөгдлийг ашиглан өгөгдлийг удирдах.

Мета өгөгдлийг ашиглан төрлийн бодит өгөгдлийг хэрхэн өөрчлөхийг авч үзье. Үүний тулд Program классын Main аргад доорх кодыг оруулан өгье.

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

Reflection гэдэг үгийг монголчилбол тусгал эсвэл ойлт гэж хэлж болно. Технологийн талаар мэдээлэл хайн судлахын тулд орчуулгаар тогтоох гэснээс шууд Reflection гэж хэрэглэвэл илүү. Reflection гэж юу болох талаар ярилцая. .NET Framework орчинд компиляц хийгдсэн ердийн dll эсхүл exe файлыг авч үзье. Энд бид дурын dll эсхүл exe файл биш яг .NET Framework -ийн бүрэлдхүүнд багтсан аль нэгэн хэл дээр бичин компиляц хийн гаргасан dll эсхүл exe файл гэдгийг онцлоё. dll эсхүл exe файлаа Ассемблай /Assembly/ гэж нэрлэе.

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

.NET -д бүх классууд бүр бидний үүсгэсэн классууд, жишээ нь System.Int32 гэх мэтүүд суурь төрлүүд далд хэлбэрээр Object классаас үүсдэг. Кодод Object классийг сууриар зааж өгөөгүй байсан ч анхдагчаар далд хэлбэрээр Object класс удамшилтын шатлалын оройд байрладаг. Иймээс бүх төрлүүд, классууд System.Object класст тодорхойлогдсон аргуудыг хэрэгжүүлж болно. Эдгээр аргуудыг авч үзье.

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

Энэ удаагийн хичээлээр бид generalization буюу ерөнхийлөл гэдэг төрөл бүрийн обьектуудын төлөв байдлын хэвийг тодорхойлох нилээд хүчирхэг хэрэгслийн талаар үзнэ.  

Ерөнхийлөл гэж юу вэ?

Ерөнхийлөл гэдэг бол класс эсхүл аргуудыг удирдах хувьсах өгөгдлийн төрөл юм. Ерөнхийлөл ашиглах өгөгдлийн төрлүүдийг урьдчилан тодорхойлохгүйгээр тэдгээрийг програмын явцад сүүлд тодорхойлох боломжийг олгодог. Үүнийг жишээгээр харцгаая. Бидэнд int төрлийн оролтын параметртэй string төрлийн гаралттай

string Move(int distance)

Move гэсэн арга байлаа гэж бодъё.

Цэсийг нээх хаах ажиллагааг хариуцах компонентийг боловсруулсан тул энэ хичээлээр програмийн удирдах цэсийг…

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

 

Математикийн үйлдлүүдэд нэг ба тэг тоонууд онцгой шинжүүдтэй. Үржих үйлдэлд нэг ба тэг

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

 

Давталт (Iterator) паттерн нийлмэл обьектын бүх элементүүдэд тэдгээрийн дотоод бүтцийг задлахгүйгээр хандах абстракт интерфейсийг тодорхойлдог. C# хэл дээр…

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

 

Тодорхой нөхцөлд жишээ нь тоог тэгд хуваах гэх мэт тохиолдолд систем өөрөө онцгой нөхцлийн генерацийг хийдэг. Гэхдээ C#

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

 

Програмийг удирдах цэсийг нээх болон хаах ажиллагааг хариуцах компонентийг боловсруулъя. Үүний тулд төслийн components хавтаст Navigation хавтасыг үүсгээд…

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

 

Арифметикийн үндсэн 4 үйлдлийн нэг бол үржих. Нэмэх , хасах үйлдлийн талаар…

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

 

Шаблоны арга (Template Method) хэв дэд классуудад алгоритмын бүтцийг өөрчлөхгүйгээр зарим алхамуудыг дахин тодорхойлох боломж олгосон ерөнхий алгоритмыг…

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

 

Гурвалжны медиантай холбоотой бодлогууд шалгалт шүүлэгт ихээр орж ирдэг. Иймээс гурвалжны медиан, түүний шинжүүдийг бүрэн мэддэг байх хэрэгтэй.

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

 

Бүх онцгой нөхцлүүдийн суурь бол Exception төрөл. Төрөлд онцгой нөхцлийн талаарх мэдээллийг авч болох хэдэн шинжийг тодорхойлсон байдаг.…

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

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

илэрхийллийг хялбарчил

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

 

ABCD трапецийн бага диагонал BD=6 бөгөөд суурьтай перпендикуляр. Трапецийн AD=3, DC=12 бол B, D мохоо өнцгийн нийлбэрийг ол.

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

 

Геометрийн шалгалтанд сурагчид шалгалтын асуултуудаас нэг асуулт ирнэ. Сурагч "Дотоод өнцөг" сэдвийн асуултуудад хариулах магадлал 0,35 харин "Багтаасан тойрог" сэдвийн асуултуудад хариулах ммагадлал 0,2 байжээ. Шалгалтын асуултуудад энэ хоёр сэдэвт хоёуланд зэрэг хамаарах асуулт байхгүй бол сурагчид энэ хоёр сэдвийн аль нэгэнд нь хамааралтай асуулт ирэх магадлалыг ол.

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