Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfa değiştirici anahtar sözcüğünü static
kapsar. "static
anahtar kelimesi, using static
yönergesinin de bir parçasıdır."
Değiştiriciyi static
kullanarak belirli bir nesne yerine türün kendisine ait olan statik bir üyeyi bildirin.
static
değiştirici static
sınıfları bildirmek 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.
class Calc1
{
public void CalculateSum()
{
int a = 3;
int b = 7;
// Static local function - cannot access 'a' or 'b' directly
static int Add(int x, int y)
{
return x + y;
}
int result = Add(a, b);
Console.WriteLine($"Sum: {result}");
}
}
/*
Output:
Sum: 10
*/
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.
class Calc2
{
static void Main()
{
Func<int, int, int> add = static (a, b) => a + b;
int result = add(5, 10);
Console.WriteLine($"Sum: {result}");
}
}
/*
Output:
Sum: 15
*/
Ö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ıyla referans verilir. Örneğin, aşağıdaki sınıfı göz önünde bulundurun:
public class MyBaseC
{
public struct MyStruct
{
public static int x = 100;
}
}
Aynı kapsamdan erişilemiyorsa static
üyesine başvurmak için, MyBaseC.MyStruct.x
üyesinin x
kapsamlı 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. Genel türler için, kapatılan her genel türün kendi statik alanların kopyası vardır. ile ThreadStaticAttribute işaretlenmiş statik alanların iş parçacığı başına bir kopyası vardır.
this
'ı static
yöntemlere veya özellik erişimcilerine başvurmak için kullanmak 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.
Uyarı
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 static
üyeleri olarak tanımlanmalıdır.
Ö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# dil belirtimi
Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.