Aracılığıyla paylaş


Statik (C# Reference)

Use static türü yerine belirli bir nesneye ait bir statik üyesi bildirmek için değiştirici.static Sınıfları, alanları, yöntemleri, özellikleri, işleçleri, olayları ve kurucular ile değiştiricisi kullanılabilir ancak dizinleyiciler, yıkıcı veya sınıflar dışındaki türleri ile kullanılamaz.Daha fazla bilgi için bkz. Statik sınıflar ve statik sınıf üyelerini (C# Programlama Kılavuzu).

Örnek

Aşağıdaki sınıf olarak bildirilmiş static ve yalnızca static yöntemleri:

    static class CompanyEmployee
    {
        public static void DoSomething() { /*...*/ }
        public static void DoSomethingElse() { /*...*/  }
    }

Bir sabit veya türü bildirimi örtülü olarak statik bir üyesidir.

Statik üyesine bir örnek başvurulamaz.Bunun yerine, tür adı ile başvurulur.Örneğin, aşağıdaki sınıf göz önünde bulundurun:

    public class MyBaseC
    {
        public struct MyStruct
        {
            public static int x = 100;
        }
    }

Statik üyesine başvurmak için x, tam adı MyBaseC.MyStruct.x, üye aynı kapsam erişilebilir değilse:

Console.WriteLine(MyBaseC.MyStruct.x);

Bir sınıfın örneğini sınıfının tüm örnek alanlar ayrı bir kopyasını bulunmasına karşın, statik her alan yalnızca bir kopyası vardır.

Kullanmak mümkün değil Bu statik yöntem veya özellik erişimcisi başvurmak için.

static Anahtar sözcüğünü bir sınıfa uygulanan, sınıfın tüm üyeler statik olmalıdır.

Sınıflar ve statik sınıflar statik kurucularý olabilir.Statik Kurucular arasında belirli bir noktada program başlatıldığında ve sınıf örneği verilir.

[!NOT]

static Anahtar sözcüğünü C++ kullanan çok daha sınırlı.C++ anahtar sözcüğü ile karşılaştırmak için bkz: Statik (C++).

Static üyeler göstermek için bir şirket çalışanı temsil eden bir sınıf düşünün.Sınıf sayısı çalışanlar ve alan çalışanların sayısını saklamak için bir yöntem içerdiğini varsayalım.Yöntem ve alanı herhangi bir örnek çalışana ait değil.Bunun yerine şirket sınıfına ait.Bu nedenle, statik sınıfının üyesi olarak bildirilmelidir.

Bu örnek yeni bir çalışan kimliği ve adını okur, bir çalışanın sayacı artırır ve yeni çalışan ve yeni çalışanların sayısı bilgilerini görüntüler.Kolaylık için bu programı geçerli çalışanların sayısını klavyeden okur.Gerçek bir uygulamada, bu bilgileri bir dosyadan okumalısınız.

    public class Employee4
{
    public string id;
    public string name;

    public Employee4()
    {
    }

    public Employee4(string name, string id)
    {
        this.name = name;
        this.id = id;
    }

    public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }
}

class MainClass : Employee4
{
    static void Main()
    {
        Console.Write("Enter the employee's name: ");
        string name = Console.ReadLine();
        Console.Write("Enter the employee's ID: ");
        string id = Console.ReadLine();

        // Create and configure the employee object:
        Employee4 e = new Employee4(name, id);
        Console.Write("Enter the current number of employees: ");
        string n = Console.ReadLine();
        Employee4.employeeCounter = Int32.Parse(n);
        Employee4.AddEmployee();

        // Display the new information:
        Console.WriteLine("Name: {0}", e.name);
        Console.WriteLine("ID:   {0}", e.id);
        Console.WriteLine("New Number of Employees: {0}",
                      Employee4.employeeCounter);
    }
}
    /*
    Input:
    Matthias Berndt
    AF643G
    15
    Sample Output:
    Enter the employee's name: Matthias Berndt
    Enter the employee's ID: AF643G
    Enter the current number of employees: 15
    Name: Matthias Berndt
    ID:   AF643G
    New Number of Employees: 16
    */

Bu örnek, bir static alan henüz bildirilen başka bir static alan kullanarak başlatmak, ancak static alaný için açıkça bir değer atamak kadar sonuçları tanımsız olacağını gösterir.

class Test
{
   static int x = y;
   static int y = 5;

   static void Main()
   {
      Console.WriteLine(Test.x);
      Console.WriteLine(Test.y);

      Test.x = 99;
      Console.WriteLine(Test.x);
   }
}
/*
Output:
    0
    5
    99
*/

C# dil belirtiminin

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

C# anahtar sözcükler

Değiştiriciler (C# Reference)

Statik sınıflar ve statik sınıf üyelerini (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu