Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Palavra-chave estática C#

Palavra-chave estática C#


Neste tutorial, aprenderemos sobre a palavra-chave static em C# com a ajuda de exemplos.

Em C#, se usarmos um static palavra-chave com membros de classe, haverá uma única cópia do membro de tipo.

E todos os objetos da classe compartilham uma única cópia em vez de criar cópias individuais.


Variáveis ​​estáticas C#


Se uma variável for declarada static , podemos acessar a variável usando o nome da classe. Por exemplo,
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();
    }
  }
}

Saída
Department: Computer Science

No exemplo acima, criamos uma variável estática chamada department . Como a variável é estática, usamos o nome da classe Aluno para acessar a variável.

Variáveis ​​estáticas versus variáveis ​​de instância


Em C#, cada objeto de uma classe terá sua própria cópia de variáveis ​​de instância. Por exemplo,
class Student {

  // instance variable
  public string studentName;
 }

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

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

Aqui, ambos os objetos s1 e s2 terá cópias separadas da variável studentName . E, eles são diferentes um do outro.

No entanto, se declararmos uma variável estática, todos os objetos da classe compartilham a mesma variável estática. E não precisamos criar objetos da classe para acessar as variáveis ​​estáticas.

Exemplo:C# variável estática vs. Variável de instância

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();
    }
  }
}

Saída
Name: Ram
School: Programiz School
Name: Shyam
School: Programiz School

No programa acima, a classe Student tem uma variável não estática chamada studentName e uma variável estática chamada schoolName .

Dentro do Programa classe,

Desde o schoolName é igual para todos os alunos, é bom fazer o schoolName estático. Economiza memória e torna o programa mais eficiente.

Métodos estáticos C#


Assim como as variáveis ​​estáticas, podemos chamar os métodos estáticos usando o nome da classe.
class Test {

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

}

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

    Test.display();
  }
}

Aqui, acessamos o método estático diretamente de Program classes usando o nome da classe.



Quando declaramos um método estático, todos os objetos da classe compartilham o mesmo método estático.

Exemplo:C# métodos estáticos e não estáticos

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();
    }
  }
}

Saída
Non static method
Static method

No programa acima, declaramos um método não estático chamado display1() e um método estático chamado display2() dentro da classe Teste .

Dentro da classe Program,

Observação :Em C#, o Principal método é estático. Assim, podemos chamá-lo sem criar o objeto.

Classe estática C#


Em C#, quando declaramos uma classe como estática, não podemos criar objetos da classe. Por exemplo,
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();
    }
  }
}

No exemplo acima, temos uma classe estática Test . Criamos um objeto t1 da classe Teste .

Como não podemos fazer um objeto da classe estática, obtemos o seguinte erro:
error CS0723: Cannot declare a variable of static type 'Test' 
error CS0712: Cannot create an instance of the static class

Observe que o campo e o método da classe estática também são estáticos porque só podemos ter membros estáticos dentro da classe estática.

Observação :Não podemos herdar uma classe estática em C#. Por exemplo,
static class A {
  ...
}

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

Acessar membros estáticos dentro da classe


Se estivermos acessando as variáveis ​​e métodos estáticos dentro da mesma classe, podemos acessá-los diretamente sem usar o nome da classe. Por exemplo,
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();
    }
  }
}

Saída
25
Static method

Aqui, estamos acessando o campo estático age e método estático display() sem usar o nome da classe.

Linguagem C

  1. Classe e objeto C#
  2. Modificadores de acesso C#
  3. C# esta palavra-chave
  4. Classe abstrata e método C#
  5. Classe aninhada C#
  6. C# Classe Parcial e Método Parcial
  7. Classe e método selados em C#
  8. Variável estática em Java:o que é bloco e método estático [exemplo]
  9. Polimorfismo em C++
  10. Abstração de dados em C++