static (C# Başvurusu)static (C# Reference)

Kullanım static belirli bir nesne yerine türün kendisine ait olduğu statik bir üye bildirmek için değiştiricisi.Use the static modifier to declare a static member, which belongs to the type itself rather than to a specific object. static Değiştiricisi sınıflar, alanları, yöntemleri, özellikleri, işleçler, olaylar ve oluşturucular ile kullanılabilir, ancak dizin oluşturucular, bir sonlandırıcı ya da sınıfları dışındaki türler ile kullanılamaz.The static modifier can be used with classes, fields, methods, properties, operators, events, and constructors, but it cannot be used with indexers, finalizers, or types other than classes. Daha fazla bilgi için statik sınıflar ve statik sınıf üyeleri.For more information, see Static Classes and Static Class Members.

ÖrnekExample

Aşağıdaki sınıf olarak bildirilir static ve yalnızca içeren static yöntemleri:The following class is declared as static and contains only static methods:

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

Bir sabit değer veya tür bildirimi örtük olarak statik bir üyedir.A constant or type declaration is implicitly a static member.

Statik bir üyeye bir örnek başvurulamaz.A static member cannot be referenced through an instance. Bunun yerine, bu tür adı ile başvurulur.Instead, it is referenced through the type name. Örneğin, aşağıdaki sınıf göz önünde bulundurun:For example, consider the following class:

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

Statik bir üyeye başvuruda bulunmak için x, tam adı kullanmanız MyBaseC.MyStruct.x, üye aynı kapsamdan erişilebilir değilse:To refer to the static member x, use the fully qualified name, MyBaseC.MyStruct.x, unless the member is accessible from the same scope:

Console.WriteLine(MyBaseC.MyStruct.x);

Bir sınıf örneği ayrı bir sınıfın tüm örnek alanları kopyasını içerirken, her bir statik alanı yalnızca bir kopyası yoktur.While an instance of a class contains a separate copy of all instance fields of the class, there is only one copy of each static field.

Kullanmak mümkün değil bu statik yöntemler veya özellik erişimcileri başvurmak için.It is not possible to use this to reference static methods or property accessors.

Varsa static anahtar sözcüğü, bir sınıfa uygulandığında, sınıfın tüm üyeleri statik olmalıdır.If the static keyword is applied to a class, all the members of the class must be static.

Sınıflar ve statik sınıfların statik oluşturucuları olabilir.Classes and static classes may have static constructors. Statik oluşturucular arasında belirli bir noktada program başlar ve sınıfın örneği çağrılır.Static constructors are called at some point between when the program starts and the class is instantiated.

Not

static Anahtar sözcüğü C++'ta kullanımı daha fazla sınırlı sahiptir.The static keyword has more limited uses than in C++. C++ anahtar sözcüğüyle karşılaştırmak için bkz depolama sınıfları (C++).To compare with the C++ keyword, see Storage classes (C++).

Statik üyeleri göstermek için bir şirket çalışanı temsil eden bir sınıf göz önünde bulundurun.To demonstrate static members, consider a class that represents a company employee. Sınıf sayısı çalışan ve bir alan çalışanların sayısını depolamak için bir yöntem içerdiğini varsayın.Assume that the class contains a method to count employees and a field to store the number of employees. Yöntemi hem de alan hiçbir örneği çalışana ait değil.Both the method and the field do not belong to any instance employee. Bunun yerine şirket sınıfa ait.Instead they belong to the company class. Bu nedenle, statik sınıf üyeleri olarak bildirilmelidir.Therefore, they should be declared as static members of the class.

ÖrnekExample

Bu örnekte yeni bir çalışanın Kimliğini ve adını okur, çalışan sayacı bir artar ve yeni çalışan ve yeni kaç kişi bilgilerini görüntüler.This example reads the name and ID of a new employee, increments the employee counter by one, and displays the information for the new employee and the new number of employees. Kolaylık olması için bu programı klavyeden çalışanların geçerli sayısını okur.For simplicity, this program reads the current number of employees from the keyboard. Gerçek bir uygulamada, bu bilgileri bir dosyadan okunmalıdır.In a real application, this information should be read from a file.

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
*/

ÖrnekExample

Bu örnek, henüz bildirilen başka bir statik alan kullanarak statik alanı başlatabilirsiniz, ancak açıkça statik alanı için bir değer atamak kadar sonuçlar tanımsız olacağını gösterir.This example shows that although you can initialize a static field by using another static field not yet declared, the results will be undefined until you explicitly assign a value to the static field.

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 belirtimiC# language specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also