Objetos Estáticos – Static Objects – C#

Tempo de leitura: 4 min

Escrito por Celso Kitamura
em 6 de setembro de 2018

Entre para o Grupo VIP e fique sabendo antes das novidades

Junte-se à nossa comunidade de App Devs que estão transformando o mundo

100% livre de spam.

Compartilhe agora mesmo:

Objetos Estáticos – Static Objects – C#
5/5 - (2 votes)

Objetos estáticos são objetos que possuem apenas uma instância e são definidos quando utilizamos a palavra-chave static.

 

Quando declaramos um objeto como estático, significa que não importa quantos deles sejam criados, existirá apenas uma cópia dele na memória. Ou seja, existe apenas uma instância do objeto.

 

Estes objetos estáticos podem ser desde classes inteiras a membros de uma classe (variáveis, por exemplo).

 

Classes Estáticas – Static Class

 

Uma classe estática é basicamente igual a uma classe não-estática. Porém uma classe estática não pode ser instanciada. Isto quer dizer que não podemos utilizar a palavra-chave new para criá-la.

 

Por este motivo, você pode acessar os membros de uma classe estática apenas usando o nome da classe.

 

Por exemplo, vamos supor que criamos uma classe chamada Utilitarios. E ela possui um método público chamado CalculaAlgo. Você pode chamar este método assim:

 

Utilitarios.CalculaAlgo();

 

Mas pra que serve isso? Pra que vou usar uma classe estática?

 

Podemos utilizar uma classe estática como um repositório de métodos que manipulam apenas parâmetros de entrada e não precisa ler (get) ou escrever (set) nenhum campo interno.

 

Como exemplo podemos usar a própria Biblioteca de Classes do .NET Framework (Class Library .NET Framework). Nela temos a classe estática System.Math, que possui várias operações matemáticas. Veja alguns exemplos que utilização desta classe:

 

double dub = -3.14; 
Console.WriteLine(Math.Abs(dub)); 
Console.WriteLine(Math.Floor(dub)); 
Console.WriteLine(Math.Round(Math.Abs(dub)));

 

Quando executamos este trecho de código temos:

 

3.14
-4
3



 

As principais características de uma classe estática:

 

  • Possui apenas membros estáticos;
  • Não pode ser instanciado.
  • É selado.
  • Não pode possuir construtores.

 

Membros estáticos de uma classe C# (Static Members)

 

As variáveis estáticas são usadas para definir constantes porque seus valores podem ser recuperados invocando a classe sem criar uma instância. As variáveis estáticas podem ser inicializadas fora da função do membro ou da definição da classe. Você também pode inicializar variáveis estáticas dentro da definição da classe.

 

Veja o exemplo a seguir:

 

using System;

namespace ExVariavelEstatica
{
   class VariavelEstatica
   {
      public static int numero;

      public void contagem()
      {
         numero++;
      }

      public int getNumero()
      {
         return numero;
      }
   }

   class TesteEstatico
   {
      static void Main(string[] args)
      {
         VariavelEstatica s1 = new VariavelEstatica ();
         VariavelEstatica s2 = new VariavelEstatica ();
         s1.contagem();
         s1.contagem();
         s1.contagem();
         s2.contagem();
         s2.contagem();
         s2.contagem();

         Console.WriteLine("Variavel numero para s1: {0}", s1.getNumero());
         Console.WriteLine("Variavel numero para s2: {0}", s2.getNumero());
         Console.ReadKey();
      }
   }
}

 

O resultado deste código pode ser visto abaixo:

 

Variavel numero para s1: 6
Variavel numero para s2: 6

 

Podemos também declarar um membro como estático. Tais funções podem acessar apenas variáveis estáticas. As funções estáticas existem mesmo antes de o objeto ser criado. Veja no exemplo a seguir:

 

using System;

namespace ExVariavelEstatica
{
   class VariavelEstatica
   {
      public static int numero;

      public void contagem()
      {
         numero++;
      }

      public static int getNumero()
      {
         return numero;
      }
   }

   class TesteEstatico
   {
      static void Main(string[] args)
      {
         VariavelEstatica s = new VariavelEstatica();
         s.contagem();
         s.contagem();
         s.contagem();

         Console.WriteLine("Variavel numero: {0}", VariavelEstatica.getNumero());
         Console.ReadKey();
      }
   }
}

 

O resultado é o seguinte:

 

Variavel numero: 3

 

Palavras finais – Objetos Estáticos

 

Classes estáticas não podem ser instanciadas usando a palavra chave new.

 

Itens estáticos podem apenas acessar outros itens estáticos. Por exemplo, uma classe estática só pode conter membros estáticos (variáveis, métodos, etc.). Um método estático só pode conter variáveis estáticas e só pode acessar outros itens estáticos.

 

Os itens estáticos compartilham os recursos entre vários usuários.

 

Static não pode ser usado com indexadores, destrutores ou tipos que não sejam classes.

 

Um construtor estático em uma classe não-estática é executado apenas uma vez quando a classe é instanciada pela primeira vez.

 

Um construtor estático em uma classe estática é executado apenas uma vez que qualquer um dos seus membros estáticos acessados pela primeira vez.

 

Os membros estáticos são alocados na área do heap de alta freqüência da memória.

 

Meu e-book Como Aprender a Programar do Absoluto Zero está GRATUITO por tempo limitado!

Olha o link: 👉🏼 https://celsokitamura.com.br/como-aprender-a-programar

Bora aprender a programar!

Compartilhe agora mesmo:

Comece pelo e-book GRATUITO (Por Tempo Limitado)

Crie Sua Primeira Skill Alexa

Se você não sabe por onde começar, este e-book te mostra o passo a passo para criar sua primeira skill Alexa.

QUERO CRIAR SKILLS PARA ALEXA!
100% livre de spam.

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta


*


*


Seja o primeiro a comentar!

Entre para o Grupo VIP e fique sabendo antes das novidades

Junte-se à nossa comunidade de App Devs que estão transformando o mundo

100% livre de spam.

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro