Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Referencia del lenguaje C#
static (Referencia de C#)

Utilice el modificador static para declarar un miembro estático, que pertenece al propio tipo en vez de a un objeto específico. El modificador static puede utilizarse con clases, campos, métodos, propiedades operadores y eventos, pero no puede utilizarse con indizadores, destructores o tipos que no sean clases. Por ejemplo, la siguiente clase se declara como static y solo contiene métodos static:

      static class CompanyEmployee
{
    public static string GetCompanyName(string name) { ... }
    public static string GetCompanyAddress(string address) { ... }
}

Para obtener más información, vea Clases estáticas y sus miembros (Guía de programación de C#).

  • Una declaración de constante o tipo constituye, implícitamente, un miembro estático.

  • No se puede hacer referencia a un miembro estático por medio de una instancia. En vez de ello, se debe hacer referencia por medio del nombre de tipo. Por ejemplo, considere la siguiente clase:

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

    Para referirse al miembro estático x, use el nombre completo (a menos que sea accesible desde el mismo ámbito):

    MyBaseC.MyStruct.x
  • Mientras que una instancia de una clase contiene una copia independiente de todos los campos de instancia de la clase, sólo existe una copia de cada campo estático.

  • No es posible utilizar this para hacer referencia a descriptores de acceso de propiedades o métodos static.

  • Si la palabra clave static se aplica a una clase, todos los miembros de la clase deben ser estáticos.

  • Las clases, incluidas las clases estáticas, pueden tener constructores estáticos. Se llama a los constructores estáticos en algún momento comprendido entre el inicio del programa y la creación de instancias de la clase.

    NoteNota

    El uso de la palabra clave static es más limitado que en C++. Para comparar con la palabra clave de C++, vea static.

Para comprender el uso de miembros estáticos, considere una clase que representa al empleado de una compañía. Suponga que la clase contiene un método que cuenta empleados y un campo que almacena el número de empleados. Ni el método ni el campo pertenecen a ninguna instancia de empleado. En vez de ello, pertenecen a la clase compañía. Por tanto, se deberían declarar como miembros estáticos de la clase.

Este ejemplo lee el nombre y el identificador de un nuevo empleado, incrementa en uno el contador de empleados y muestra la información del nuevo empleado, así como el nuevo número de empleados. Por motivos de simplicidad, el programa lee el número actual de empleados desde el teclado. En una aplicación real, esta información se leería desde un archivo.

// cs_static_keyword.cs
using System;

public class Employee
{
    public string id;
    public string name;

    public Employee()
    {
    }

    public Employee(string name, string id)
    {
        this.name = name;
        this.id = id;
    }

    public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }
}

class MainClass : Employee
{
    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:
        Employee e = new Employee(name, id);
        Console.Write("Enter the current number of employees: ");
        string n = Console.ReadLine();
        Employee.employeeCounter = Int32.Parse(n);
        Employee.AddEmployee();

        // Display the new information:
        Console.WriteLine("Name: {0}", e.name);
        Console.WriteLine("ID:   {0}", e.id);
        Console.WriteLine("New Number of Employees: {0}",
                      Employee.employeeCounter);
    }
}

Entrada

Tara Strahan
AF643G
15

Resultados del ejemplo

Enter the employee's name: Tara Strahan
Enter the employee's ID: AF643G
Enter the current number of employees: 15
Name: Tara Strahan
ID:   AF643G
New Number of Employees: 16

Este ejemplo muestra que aunque se puede inicializar un campo estático con otro campo estático aún sin declarar, el resultado no estará definido hasta que no asigne explícitamente un valor al campo estático.

// cs_static_keyword_2.cs
using System;
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);
   }
}

Resultados

0
5
99

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 1.6.5.3 Métodos estáticos y de instancia

  • 5.1.1 Variables estáticas

  • 10.2.5 Miembros estáticos y de instancia

  • 10.4.1 Campos estáticos y de instancia

  • 10.4.5.1 Inicialización de campos estáticos

  • 10.5.2 Métodos estáticos y de instancia

  • 10.6.1 Propiedades estáticas y de instancia

  • 10.7.3 Eventos estáticos y de instancia

  • 10.11 Constructores estáticos

Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker