Objetos Estáticos - Static Objects - C# - Celso Kitamura
Objetos Estáticos – Static Objects – C#
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:
Quando executamos este trecho de código temos:
As principais características de uma classe estática:
Possui apenas membros estáticos;
Não pode ser instanciado.
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.
namespace ExVariavelEstatica
class VariavelEstatica
public void contagem()
class TesteEstatico
VariavelEstatica s1 = new VariavelEstatica ();
VariavelEstatica s2 = new VariavelEstatica ();
s1.contagem();
s2.contagem();
Console.WriteLine("Variavel numero para s1: {0}", s1.getNumero());
Console.WriteLine("Variavel numero para s2: {0}", s2.getNumero());
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:
public static int getNumero()
VariavelEstatica s = new VariavelEstatica();
s.contagem();
Console.WriteLine("Variavel numero: {0}", VariavelEstatica.getNumero());
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.