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.

Belirli bir nesne yerine türün static kendisine ait olan statik bir üyeyi bildirmek için değiştiriciyi kullanın. 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 staticyerel bir işleve ekleyebilirsiniz. Statik yerel işlev yerel değişkenleri veya örnek durumunu yakalayamaz.

C# 9.0 sürümünden başlayarak 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şvurulamıyor. 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şlatılması ve sınıfın örneği oluşturma arasında bir noktada çağrılır.

Not

Anahtar sözcüğün static kullanımı 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 herhangi bir çalışan örneğine ait değildir. Bunun yerine, bir bütün olarak çalışanların sınıfına aittirler. Sınıfın üyeleri 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 örnekte, henüz bildirilmemiş başka static bir alan kullanarak bir static alanı başlatabileceğiniz gösterilmektedir. 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.