static (C# Başvurusu)

Bu sayfa değiştirici anahtar sözcüğünü static kapsar. anahtar static sözcüğü de yönergesinin using static bir parçasıdır.

Değiştiriciyi static kullanarak belirli bir nesne yerine türün kendisine ait olan statik bir üyeyi bildirin. Değiştirici, static sınıfları bildirmek static için kullanılabilir. Sınıflarda, arabirimlerde ve yapılarda, değiştiriciyi static alanlara, yöntemlere, özelliklere, işleçlere, olaylara ve oluşturuculara ekleyebilirsiniz. Değiştirici static , dizin oluşturucular veya sonlandırıcılarla kullanılamaz. Daha fazla bilgi için bkz . Statik Sınıflar ve Statik Sınıf Üyeleri.

Değiştiriciyi static yerel bir işleve ekleyebilirsiniz. Statik bir yerel işlev yerel değişkenleri veya örnek durumunu yakalayamaz.

Değiştiriciyi static bir lambda ifadesine veya anonim yönteme ekleyebilirsiniz. Statik lambda veya anonim yöntem yerel değişkenleri veya örnek durumunu yakalayamaz.

Örnek - statik sınıf

Aşağıdaki sınıf olarak static bildirilir ve yalnızca static yöntemleri içerir:

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

Sabit veya tür bildirimi örtük olarak bir static üyedir. Bir static üyeye örnek üzerinden başvuruda bulunılamaz. Bunun yerine, tür adı üzerinden 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;
    }
}

üyesine static başvurmak için, MyBaseC.MyStruct.xüyeye xaynı kapsamdan erişilmediği sürece tam adını kullanın:

Console.WriteLine(MyBaseC.MyStruct.x);

Bir sınıfın örneği, sınıfın tüm örnek alanlarının ayrı bir kopyasını içerse de, her static alanın yalnızca bir kopyası vardır.

Yöntemlere veya özellik erişimcilerine başvurmak static için kullanmak this mümkün değildir.

static Anahtar sözcüğü bir sınıfa uygulanırsa, sınıfın tüm üyeleri olmalıdırstatic.

Sınıfların, arabirimlerin ve static sınıfların static oluşturucuları olabilir. Bir static oluşturucu, programın başlamasıyla sınıfın örneği oluşturma arasında bir noktada çağrılır.

Not

Anahtar sözcüğün static kullanımları C++ dilindekinden daha sınırlı. C++ anahtar sözcüğüyle karşılaştırmak için bkz. Depolama sınıfları (C++).

Üyeleri göstermek static için şirket çalışanlarını temsil eden bir sınıf düşünün. sınıfının çalışanları saymak için bir yöntem ve çalışan sayısını depolamak için bir alan içerdiğini varsayalım. Hem yöntem hem de alan hiçbir çalışan örneğine ait değildir. Bunun yerine, bir bütün olarak çalışanların sınıfına aittirler. Bunlar sınıfın üyesi olarak static bildirilmelidir.

Örnek - statik alan ve yöntem

Bu örnek, yeni çalışanın adını ve kimliğini okur, çalışan sayacını bir artırır ve yeni çalışanın bilgilerini ve yeni çalışan sayısını görüntüler. Bu program, geçerli çalışan sayısını klavyeden okur.

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: {e.name}");
        Console.WriteLine($"ID:   {e.id}");
        Console.WriteLine($"New Number of Employees: {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
*/

Örnek - statik başlatma

Bu örnek, henüz bildirilmemiş başka static bir alan kullanarak bir static alanı başlatabileceğinizi gösterir. Siz alana açıkça bir değer static atayana kadar sonuçlar tanımsız hale gelecek.

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# dili belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.