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 static
yerel 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 x
aynı 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.