static (odwołanie w C#)
Użyj static modyfikator zadeklarować członka statycznego, która należy do typu, sama zamiast do określonego obiektu.static Modyfikator może być używany z klas, pola, metody, właściwości, operatorów, zdarzenia i konstruktory, ale nie można używać z indeksatory, destruktory lub innego typu niż klas.Aby uzyskać więcej informacji, zobacz Klasy statyczne i statyczni członkowie klas (Przewodnik programowania w języku C#).
Przykład
Poniższa klasa jest zadeklarowana jako static i zawiera tylko static metod:
static class CompanyEmployee
{
public static void DoSomething() { /*...*/ }
public static void DoSomethingElse() { /*...*/ }
}
Deklaracja stała lub typ jest niejawnie członka statycznego.
Nie można odwoływać się członka statycznego, za pośrednictwem instancji.Zamiast tego jest określany poprzez nazwę typu.Na przykład rozważmy następujące klasy:
public class MyBaseC
{
public struct MyStruct
{
public static int x = 100;
}
}
Aby odwołać się do członka statycznego x, użyj w pełni kwalifikowanej nazwy MyBaseC.MyStruct.x, chyba że członek ten jest niedostępny z zakresu tej samej:
Console.WriteLine(MyBaseC.MyStruct.x);
Podczas gdy wystąpienie klasy zawiera oddzielną kopię wszystkich pól instancji klasy, istnieje tylko jedna kopia każdego pola statycznego.
Nie jest możliwe wykorzystanie to do statycznej metody referencyjne lub Akcesory właściwości.
Jeśli static słowo kluczowe jest stosowane do klasy, członkowie klasy musi być statyczna.
Klasy i klasy statyczne mogą mieć konstruktory statyczne.Konstruktory statyczne są nazywane w pewnym momencie między podczas uruchamiania programu i wystąpienie klasy zostało utworzone.
[!UWAGA]
static Słowa kluczowego ma bardziej ograniczone zastosowań niż w języku C++.Aby porównać ze słowem kluczowym C++, zobacz Static (C++).
Aby wykazać elementy statyczne, należy wziąć pod uwagę klasa, która reprezentuje pracownika firmy.Założono, że klasa zawiera metody, liczba pracowników i pola do przechowywania liczby pracowników.Metoda oraz w polu nie należą do dowolnego pracownika instancji.Zamiast tego należą do klasy przedsiębiorstwa.Dlatego powinien być zadeklarowany jako elementy statyczne klasy.
W tym przykładzie otrzymuje nazwę i identyfikator nowego pracownika, zwiększa licznik pracownika o jeden i wyświetla informacje dotyczące nowego pracownika i liczbę nowych pracowników.Dla uproszczenia to program odczytuje bieżącą liczbę pracowników z klawiatury.W rzeczywistej aplikacji należy odczytywać informacje z pliku.
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: {0}", e.name);
Console.WriteLine("ID: {0}", e.id);
Console.WriteLine("New Number of Employees: {0}",
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
*/
Ten przykład pokazuje, że chociaż pola statycznego można zainicjować przy użyciu innego pola statycznego niezgłoszonych, wyniki będą niezdefiniowane aż jawnie przypisać wartość do pola statycznego.
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
*/
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.
Zobacz też
Informacje
Klasy statyczne i statyczni członkowie klas (Przewodnik programowania w języku C#)
Koncepcje
Przewodnik programowania w języku C#