C#: Exceções, Interfaces e Iteradores - Guia de Conceitos Fundamentais
Classificado em Computação
Escrito em em
português com um tamanho de 3,78 KB
O que é uma Exceção? Como Lançar e Tratar?
Uma exceção consiste numa instância de System.Exception ou de uma classe derivada desta.
O programador pode:
- Criar uma exceção utilizando diretamente a classe
System.Exception. - Definir novas classes, derivadas de
System.ApplicationException(Classe base reservada para exceções gerais de um programa).
Nota: Em C#, apenas podem ser lançados objetos que derivem de System.Exception.
O que são Exceções Aritméticas?
Dá-se este nome quando são ultrapassados os limites numéricos das variáveis.
Controlo de Exceções Aritméticas (Checked/Unchecked)
O C# permite obrigar ou evitar o lançamento de exceções aritméticas através das palavras-chave checked e unchecked:
- Obrigar a lançar exceções (
checked):uint numero = uint.MaxValue; checked { numero++; } // Lança exceção se houver overflow - Evitar exceções (
unchecked):uint numero = uint.MaxValue; unchecked { numero++; } // Permite overflow silencioso
Estas palavras-chave também podem ser usadas em expressões:
uint numero = uint.MaxValue;
numero = checked(numero + 1);
numero = unchecked(numero + 1);Interfaces em C#
Uma Interface especifica um conjunto de propriedades, métodos e eventos que uma classe deve implementar. Interfaces representam funcionalidades que uma classe suporta.
- O nome da interface deve começar pela letra
I, maiúscula. - Uma classe pode implementar uma ou mais interfaces.
Vantagens das Interfaces
Interfaces vs. Composição
Na composição, perde-se a capacidade de converter um objeto numa classe base e utilizá-lo independentemente das suas especificidades, algo que as interfaces facilitam através do polimorfismo.
Interfaces vs. Herança Múltipla
Em C#, não existe herança múltipla de classes. As interfaces permitem alcançar um mecanismo semelhante, pois uma classe pode implementar múltiplas interfaces.
Interfaces vs. Classes Abstratas
Ao contrário das classes abstratas:
- Nas interfaces, não é possível declarar campos no seu interior.
- É possível que as classes implementem mais do que uma interface.
- É possível herdar de outra interface (A classe que implementar a interface derivada tem de implementar todos os métodos definidos).
O que são Enumeradores?
Enumeradores permitem implementar tipos de dados que podem ser utilizados com o operador foreach. Os elementos da estrutura de dados podem ser percorridos utilizando esse operador.
Mecanismos das Interfaces IEnumerable e IEnumerator
Interface IEnumerable
A interface IEnumerable permite que os objetos que a implementam sejam utilizados com o operador foreach. Pertence ao espaço de nomes System.Collections.
public interface IEnumerable {
IEnumerator GetEnumerator();
}Interface IEnumerator
Os objetos da interface IEnumerator são utilizados para iterar ao longo da coleção em causa.
public interface IEnumerator {
object Current { get; }
bool MoveNext();
void Reset();
}O que é um Iterador?
Um Iterador corresponde à implementação de um método que retorna uma das seguintes interfaces:
System.Collections.IEnumeratorSystem.Collections.IEnumerable