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. |