Sdílet prostřednictvím


statické (C#-Reference)

Použití static modifikátor deklarovat statický člen, který patří samotný datový typ, nikoli konkrétního objektu.static Modifikátor lze s tříd, polí, metody, vlastnosti, operátory, události a konstruktory, ale nelze použít indexování, destruktory nebo jiných typů než třídy.Další informace naleznete v tématu Statické třídy a členy statických tříd (Příručka programování C#).

Příklad

Následující třídy je deklarován jako static a obsahuje pouze static metody:

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

Konstanta nebo typ prohlášení je implicitně statický člen.

Statický člen nelze odkazovat pomocí instance.Místo toho se odkazuje pomocí názvu typu.Například zvažte následující třídy:

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

Odkázat na statický člen x, plně kvalifikovaný název MyBaseC.MyStruct.x, pokud člen je přístupné ze stejného oboru:

Console.WriteLine(MyBaseC.MyStruct.x);

Zatímco instance třídy obsahuje kopii všech polí instance třídy, je pouze jedna kopie každé statické pole.

Není možné použít této statické metody nebo přístupové objekty vlastnosti odkazu.

Pokud static třídy je použito klíčové slovo, všechny členy této třídy musí být statický.

Tříd a statických tříd může být statické konstruktory.Při spuštění programu a zabrání vytvoření instance třídy, se nazývají místě mezi statické konstruktory.

[!POZNÁMKA]

static Klíčové slovo má více omezené použití než v jazyce C++.Chcete-li porovnat s klíčovým slovem C++, viz Statické (C++).

Statické členy prokázat, zvažte možnost Třída představující zaměstnance společnosti.Předpokládejme, že třída obsahuje metodu počet zaměstnanců a pole k uložení počtu zaměstnanců.Metoda a pole nepatří do žádné instance zaměstnance.Místo patří do třídy společnosti.Proto jsou by deklarován jako statické členy třídy.

Tento příklad načte název a ID nového zaměstnance, zaměstnance čítače zvýší o jednu a zobrazí informace o nové zaměstnance a nové číslo zaměstnance.Pro jednoduchost tento program načte aktuální počet zaměstnanců z klávesnice.Tyto informace by měly v reálné aplikaci číst ze souboru.

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

Tento příklad ukazuje, že ačkoliv statické pole můžete inicializovat pomocí jiného statické pole ještě není deklarována, výsledky nedefinovaná, dokud výslovně přiřadíte hodnotu statické pole.

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

Specifikace jazyka C#

Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

Modifikátory (C#-Reference)

Statické třídy a členy statických tříd (Příručka programování C#)

Koncepty

Příručka programování C#

Další zdroje

C#-Reference