static (C# Başvurusu)
Bu sayfa static değiştirici anahtar sözcüğünü içerir. staticAnahtar sözcüğü ayrıca yönergesinin bir parçasıdır using static .
Belirli bir static nesne yerine türüne ait olan statik bir üye bildirmek için değiştiricisini kullanın. staticDeğiştirici, sınıfları bildirmek için kullanılabilir static . Sınıflar, arabirimler ve yapılar ' da static alanları, yöntemleri, özellikleri, işleçleri, olayları ve oluşturuculara değiştiricisini ekleyebilirsiniz. staticDeğiştirici, Dizin oluşturucular veya sonlandırıcılar ile kullanılamaz. Daha fazla bilgi için bkz. statik sınıflar ve statik sınıf üyeleri.
C# 8,0 ' den başlayarak, static değiştirici bir Yerel işleveeklenebilir. Statik bir yerel işlev yerel değişkenler veya örnek durumu yakalayamaz.
C# 9,0 ' den başlayarak static bir lambda ifadesine veya anonim yöntemedeğiştirici ekleyebilirsiniz. Statik lambda veya anonim yöntem yerel değişkenleri veya örnek durumunu yakalayabilir.
Örnek-statik sınıf
Aşağıdaki sınıf olarak bildirilmiştir static 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 bir örnek üzerinden 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;
}
}
Üyeye başvurmak için, static x MyBaseC.MyStruct.x üyenin aynı kapsamdan erişilebilir olmadığı durumlar dışında tam adı kullanın:
Console.WriteLine(MyBaseC.MyStruct.x);
Bir sınıf örneği, sınıfının tüm örnek alanlarının ayrı bir kopyasını içerdiğinde, her alanın yalnızca bir kopyası vardır static .
this static Yöntemlere veya özellik erişimcilerine başvurmak için kullanılması mümkün değildir.
staticAnahtar sözcüğü bir sınıfa uygulanırsa, sınıfın tüm üyeleri olmalıdır static .
Sınıflar, arabirimler ve static sınıflar oluşturuculara sahip olabilir static . Bir static Oluşturucu, programın başladığı ve sınıfın örneği oluşturulan bir noktada çağrılır.
Not
staticAnahtar sözcüğünün C++ ' dan daha fazla sınırlı kullanımı vardır. C++ anahtar sözcüğüyle karşılaştırmak için bkz. Depolama sınıfları (C++).
Üyeleri göstermek için static , bir şirket çalışanını temsil eden bir sınıf düşünün. Sınıfın çalışanları saymak için bir yöntem ve çalışanların sayısını depolamak için bir alan içerdiğini varsayın. Hem yöntemi hem de alanı bir çalışan örneğine ait değildir. Bunun yerine, çalışanlar sınıfına bir bütün olarak aittir. staticSınıfın üyeleri olarak bildirilmelidir.
Örnek-statik alan ve Yöntem
Bu örnek, yeni bir çalışanın adını ve KIMLIĞINI okur, bir çalışan sayacını bir artırır ve yeni çalışana ait bilgileri ve yeni çalışanların sayısını görüntüler. Bu program, klavyeden geçerli çalışan sayısını 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, static henüz bildirilmemiş olan başka bir alanı kullanarak bir alanı başlatabilmeniz gerektiğini gösterir static . Alana açıkça bir değer atanana kadar sonuçlar tanımsız olur static .
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.