csharp-partial-acar-sozü

C# partial açar sözü

C# dilində klas və metodları xüsusi açar söz olan partial ilə qeyd etmək olur. Yəqinki bəziləriniz misalçün WinFormda generasiya olunan Formaların kodlarına baxan zaman orada partial açar sözünü görmüsünüz.Bu məqalədə aşağıdakı suallara cavab verəcəyik:

1)Partial klaslar nədir və nə işə yarayır?

2)Partial metodlar nədir və nə işə yarayır?


Partial classlar nədir və nə işə yarayır?

Partial klasların məqsədi klasların daxili strukturunu rahat formada ayırd etməkdən ibarətdir.

Bunu sadə formada belə başa düşə bilərik: Əgər klasın daxilində çoxlu üzvlər(property, method, field və.s) varsa onları rahat klassifikasiya etmək üçün misalçün metodları ayrı, propertyləri ayrı saxlaya bilərik. .NET-in qrafiki interfeys texnlogiyalarında(misalçün WinForm) bu yanaşma qaydası geniş istifadə olunur. Bunu görmək üçün Visual studioda yeni bir Winform proyekt yaradaq və formaya 1 button ,2 textbox və 2 label əlavə edək. F7 düyməsini basaraq proqramın source code(mənbə kodları)-na daxil olduqda atdığımız heç bir komponenti görə bilmirik.

Halbuki həmin komponentlər Form1 klasının içərisində private olaraq yaranmalı idi. Həmçinin görürük ki, klasımız partial açar sözü ilə mark olunur. Bu o deməkdir ki ,Form1 klasının bir parçası haradasa başqa yerdədir. Buzaman Solution Explorerdə Form1 klasını içərisinə gələrək orada Form1.Designer.cs faylının görürük. Həmin faylı açanda formamızın üzərindəki komponentlərin əslində burada ayrıca bir klasın içərisində generasiya olunduğunu görürük.

Bu yanaşma qaydasının əsas məqsədi ondan ibarətdir ki, generasiya olunan qrafiki interfeys elementləri ilə öz yazdığımız proqram parçalarını ayrı saxlamaq və bununla da proqramçının komkret olaraq öz işinə yönəlməsini təmin etməkdir.

Partial klaslar yekunda vahid bir klas olaraq generasiya olunurlar. Sadəcə kodlama zamanı görünüşü asanlaşdırmaq üçün istifadə edilir.Ayırca bir klas yaradaraq bunu yoxlaya bilərik.

 partial class Person
    {
        public Person(string name)
        {
            Name = name;
        }
        public int Id { get; set; }
        public string Name { get; private set; }
        public string Email { get; set; }
        public byte Age { get; set; }

    }


    partial class Person
    {
        public void ChangeEmail(string email)
        {
            //for demo purpose
            Email = email;
        }


        public void ChangeName(string name)
        {
            if (Name.Length > 2)
            {
                Name = name;
           
            }
               
        }

    }

Gördüyümüz kimi iki eyniadlı klas yaratmağa ozaman icazə verilir ki, ya onlar ayri namespace-də olsunlar ya da partial açar sözü ilə qeyd olunsunlar. Partial burada onu bildirir ki, bu klasin bir hissəsi başqa eyniadlı klasdadır.


Partial metodlar nədir və nə işə yarayır?

Partial klaslardan fərqli olaraq partial metodlar daxili realizasiya olmayan metodlardır. Bu metodların yaradılmasında əsas məqsəd onların sonrada realizə olunmasıdır.

  partial class Person
    {
        public void ChangeEmail(string email)
        {
            //for demo purpose
            Email = email;
        }


        public void ChangeName(string name)
        {
            if (Name.Length > 2)
            {
                Name = name;
                 //calling partial method
                NotifyUser(() => Console.WriteLine($"Name changed to `{name}`"));
            }
               
        }
          //partial method declaration
         partial void NotifyUser(Action notification);
    }


 partial class Person
    {
        public Person(string name)
        {
            Name = name;
        }
        public int Id { get; set; }
        public string Name { get; private set; }
        public string Email { get; set; }
        public byte Age { get; set; }

      //implementing partial method
        partial void NotifyUser(Action notification)
        {
            Console.WriteLine("Notification started");
            notification();
            Console.WriteLine("Notification ended");
        }
    }


  

Yəni əgər hər hansı bir metodumuz varsa və onun daxilində nə yazacağımızı əvvəlcədən bilmiriksə və metod müəyyən şərtlər çərçivəsindədirsə ozaman həmin metodu partial vermək olar. Gəlin bu şərtlərə baxaq:

1)Partial metodları heç bir əlçatma modifikatoru ilə göstərmirik, dolayi yolla private sayılırlar

2)Partial metodlar nəticə qaytarmırlar

3)Bu metodları birbaşa çağırmaq olmur

4)Partial metodlar başqa metodlara “koməkçi” rolu oynayırlar.

5)Əgər partial metodun realizasiyası verilməyibsə o kompilyator tərəfindən sadəcə escape olunur, nəzərə alınmır.

Tural

Tural Süleymani

Süleymani Tural Microsoft-un MCSD statuslu mütəxəssisidir, 2008-ci ildən bu yana proqramlaşdırma üzrə tədris aparır

Müəllifin bu dildə ən son postları

Bu yazıları da bəyənə bilərsiniz