Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Palabra clave estática de C#

Palabra clave estática de C#

En este tutorial, aprenderemos sobre la palabra clave estática en C# con la ayuda de ejemplos.

En C#, si usamos un static palabra clave con miembros de clase, entonces habrá una sola copia del miembro de tipo.

Y todos los objetos de la clase comparten una sola copia en lugar de crear copias individuales.


Variables estáticas de C#

Si se declara una variable static , podemos acceder a la variable usando el nombre de la clase. Por ejemplo,

using System;

namespace StaticKeyword {

  class Student {

    // static variable
    public static string department = "Computer Science";
  }

  class Program {
    static void Main(string[] argos) {
    
      // access static variable
      Console.WriteLine("Department: " + Student.department);
     
      Console.ReadLine();
    }
  }
}

Salida

Department: Computer Science

En el ejemplo anterior, hemos creado una variable estática llamada departamento . Dado que la variable es estática, hemos utilizado el nombre de clase Estudiante para acceder a la variable.


Variables estáticas frente a variables de instancia

En C#, cada objeto de una clase tendrá su propia copia de las variables de instancia. Por ejemplo,

class Student {

  // instance variable
  public string studentName;
 }

class Program {
  static void Main(string[] args) {

    Student s1 = new Student();
    Student s2 = new Student();
  }
}

Aquí, ambos objetos s1 y s2 tendrá copias separadas de la variable studentName . Y son diferentes entre sí.

Sin embargo, si declaramos una variable estática, todos los objetos de la clase comparten la misma variable estática. Y no necesitamos crear objetos de la clase para acceder a las variables estáticas.

Ejemplo:C# Variable estática vs. Variable de instancia

using System;
 
namespace StaticKeyword {
 
  class Student {
    static public string schoolName = "Programiz School";
    public string studentName;
 
  }
 
    class Program {
    static void Main(string[] args) {
       
      Student s1 = new Student();
      s1.studentName = "Ram";

      // calls instance variable
      Console.WriteLine("Name: " + s1.studentName);
      // calls static variable
      Console.WriteLine("School: " + Student.schoolName);
 
      Student s2 = new Student();
      s2.studentName = "Shyam";
   
       // calls instance variable
      Console.WriteLine("Name: " + s2.studentName);
      // calls static variable
      Console.WriteLine("School: " + Student.schoolName);
      
      Console.ReadLine();
    }
  }
}

Salida

Name: Ram
School: Programiz School
Name: Shyam
School: Programiz School

En el programa anterior, la clase Student tiene una variable no estática llamada studentName y una variable estática llamada schoolName .

Dentro del Programa clase,

Desde el nombreDeLaEscuela es el mismo para todos los estudiantes, es bueno hacer el schoolName estático. Ahorra memoria y hace que el programa sea más eficiente.


Métodos estáticos de C#

Al igual que las variables estáticas, podemos llamar a los métodos estáticos usando el nombre de la clase.

class Test {

  public static void display() {....}

}

class Program {
  static void Main(string[] args) {

    Test.display();
  }
}

Aquí, hemos accedido al método estático directamente desde Program clases usando el nombre de la clase.

Cuando declaramos un método estático, todos los objetos de la clase comparten el mismo método estático.

Ejemplo:métodos estáticos y no estáticos de C#

using System;
 
namespace StaticKeyword {
 
  class Test {
 
    public void display1() {
 
      Console.WriteLine("Non static method");
    }
    public static void display2() {
 
      Console.WriteLine("Static method");
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      Test t1 = new Test();
      t1.display1();
      Test.display2();    
      Console.ReadLine();
    }
  }
}

Salida

Non static method
Static method

En el programa anterior, hemos declarado un método no estático llamado display1() y un método estático llamado display2() dentro de la clase Prueba .

Dentro de la clase Programa,

Nota :En C#, el Principal El método es estático. Entonces, podemos llamarlo sin crear el objeto.


C# Clase estática

En C#, cuando declaramos una clase como estática, no podemos crear objetos de la clase. Por ejemplo,

using System;

namespace StaticKeyword {

  static class Test {
    static int a = 5;
    static void display() {

      Console.WriteLine("Static method");
    }
  
    static void Main(string[] args) {

      // creating object of Test
      Test t1 = new Test();
      Console.WriteLine(a);
      display();
    }
  }
}

En el ejemplo anterior, tenemos una clase estática Test . Hemos creado un objeto t1 de la clase Prueba .

Como no podemos hacer un objeto de la clase estática, obtenemos el siguiente error:

error CS0723: Cannot declare a variable of static type 'Test' 
error CS0712: Cannot create an instance of the static class

Observe que el campo y el método de la clase estática también son estáticos porque solo podemos tener miembros estáticos dentro de la clase estática.

Nota :No podemos heredar una clase estática en C#. Por ejemplo,

static class A {
  ...
}

// Error Code
class B : A {
  ...
}

Acceso a miembros estáticos dentro de la clase

Si estamos accediendo a las variables y métodos estáticos dentro de la misma clase, podemos acceder directamente a ellos sin usar el nombre de la clase. Por ejemplo,

using System;
 
namespace StaticKeyword {
 
  class Test {
 
    static int age = 25;
    public static void display() {
 
      Console.WriteLine("Static method");
    }
   
    static void Main(string[] args) {
 
      Console.WriteLine(age);
      display();
      Console.ReadLine();
    }
  }
}

Salida

25
Static method

Aquí, estamos accediendo al campo estático edad y método estático display() sin usar el nombre de la clase.


Lenguaje C

  1. Clase y objeto de C#
  2. Modificadores de acceso de C#
  3. C# esta palabra clave
  4. Clase y método abstractos de C#
  5. Clase anidada de C#
  6. C# Clase parcial y método parcial
  7. Clase y método sellados de C#
  8. Variable estática en Java:¿Qué es el bloque estático y el método? [Ejemplo]
  9. Polimorfismo en C++
  10. Abstracción de datos en C++
  11. Encapsulación de datos en C++