Outros Modificadores

A classe pode receber o seguinte modificador:

Modificador e classe Significado
abstract Indica que a classe é abstrata, ou seja, contém  pelo menos um método abstrato. Ela deve ser herdada e ter os seus método abstratos implementados. Não podemos criar instâncias de classes abastratas.

Os membros podem receber os seguintes modificadores: 

Modificador e membro Aplicação Restrições Significado
static Campos, métodos e propriedades. Não se aplica a indexadores construtores e destrutores   Faz com que o elemento não seja aplicado a objeto nenhum, pode ser chamado no contexto da classe. Por exemplo, o método “Main” tem que ser “static”
virtual Método e propriedades. Não pode ser usado em conjunto com “static”, “virtual” ou “override” Declara um ancestral que pode ser redefinido na classe derivada.
override Método e propriedades. Não pode ser usado em conjunto com “new”, “static”, “virtual” ou “override” Provê uma nova implementação de um método virtual de uma classe base.
readonly Método e propriedades.   Declara um campo que pode ser atribuído apenas no construtor da mesma classe.
abstract Método e propriedades. Não pode ser usado em conjunto com “static”, “virtual” ou “override” Método ou propriedade em classe abstrata que deve ser implementado em classe derivada.
new Método e propriedades.   Especifica que o método ou propriedade esconde outro virtual com a mesma assinatura (nome e parâmetros) da classe base. Pode ser usando em conjunto com virtual.

Campos readonly/const

Os campos podem ser declarados como “readonly” e “const”.

Um campo const só pode ser inicializado na declaração. Caso um campo const não seja utilizado, nenhum aviso é emitido. Um campo readonly pode ser inicializado tanto na sua declaração como no construtor. Caso um campo readonly não seja utilizado, um aviso é emitido.

Veja alguns exemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Classe1
{
	// Campo   readonly pode ser inicializado na declaração e no construtor
	readonly   int RO = 10;
	// Constante só pode ser inicializada na declaração
	const   int CO = 20;
	// Campo   comum (variável de instância)
	int z;
	// Campo   static: uma única cópia para todos objetos da classe 
	static int ST; <br />
	public Classe1()
	{
		//   Atribuição ao campo readonly
		RO   = 40;
		// Variável local
		int v = CO + RO;
		Console.WriteLine(v);
	}
}