Sobes.tech
Middle

İstifadə direktivi necə görünür tərtibdən sonra?

sobes.tech Süni İntellekt

AI-dan cavab

using direktivi özü-özlüyündə icra olunan kod yaratmır. Bu, tərtibçi tərəfindən tərtib mərhələsində işlənir və müxtəlif məqsədlər üçün istifadə olunur:

  1. İstifadə olunan ad sahələrinin göstərilməsi (usings for namespaces): Bu, göstərilən ad sahələrindən tipləri tam keyfiyyətli ad olmadan istifadə etməyə imkan verir. Tərtibdən sonra, IL kodundakı tiplərə istinadlar tam keyfiyyətli adları (ad sahəsi + tip adı) ehtiva edəcək.

    // Tərtibdən əvvəl:
    using System;
    
    // Console sinifini keyfiyyət olmadan istifadə et
    Console.WriteLine("Hello"); 
    
    // Tərtibdən sonra (IL kodunda):
    // System.Console::WriteLine(string) metodunu çağır
    
  2. Ad sahələri və ya tiplər üçün takma adlar (using aliases): Bu, ad sahəsi və ya tip üçün daha qısa bir ad yaradır. IL kodunda orijinal tam adlar istifadə olunur, takma adlar deyil.

    // Tərtibdən əvvəl:
    using MyCustomType = MyProject.MyNamespace.SomeVeryLongTypeName;
    
    MyCustomType instance = new MyCustomType();
    
    // Tərtibdən sonra (IL kodunda):
    // MyProject.MyNamespace.SomeVeryLongTypeName tipinin nümunəsini yaradın
    
  3. Statik using (using static): Bu, tipin statik üzvlərini birbaşa çağırmağa imkan verir. IL kodunda çağırış tam tip adı və statik metod daxil olacaq.

    // Tərtibdən əvvəl:
    using static System.Math;
    
    double result = Sqrt(16.0); // Math.Sqrt istifadə et
    
    // Tərtibdən sonra (IL kodunda):
    // System.Math::Sqrt(double) statik metodunu çağır
    
  4. using-direktivi (Statement block): Bu, IDisposable interfeysini həyata keçirən resursların düzgün sərbəst buraxılmasını təmin edir. Tərtibçi try...finally blokunu yaradır və obyektin Dispose() metodunu çağırır.

    // Tərtibdən əvvəl:
    using (var stream = new System.IO.FileStream("file.txt", System.IO.FileMode.Open))
    {
        // axınla işləmək
    } // Dispose() burada çağırılır
    
    // Tərtibdən sonra (IL kodu nümunəsi):
    /*
    .try
    {
        // axın obyektinin yaradılması
        // axınla işləmək
    }
    finally
    {
        // null yoxlaması və stream.Dispose() çağırılması
    }
    */
    

Beləliklə, using direktivləri tərtib olunmuş kodda özləri kimi qalmır. Onlar, ilk üç halda, tiplərin və üzvlərin adlarının necə həll olunmasına və resursların idarə olunması üçün kodun necə yaradılmasına təsir edir (sonuncu halda).