C# - Cinco recursos importantes que você tem que saber
Hoje vamos recordar cinco recursos importantes já implementados na linguagem C# que você tem que conhecer. |
Recurso bom é aquele que otimiza o código e que a gente usa. De nada adianta saber que o recurso existe se você não o utiliza. Certo ?
Pensando nesses termos vamos recordar e incentivar o uso de cinco recursos importantes que não são novos na linguagem C# mas que podem não estar sendo utilizados.
Para exemplificar o código usado no artigo vamos usar o Visual Studio Community 2019 e criar um projeto do tipo Console Application para .NET Core:
Os recursos apresentandos necessitam da versão 6.0 em diante do C#.
1- Expression Bodies Methods
Quantas vezes você teve que escrever um método usando apenas uma linha de código ?
Sabia que você pode simplesmente criar um membro incorporado de expressão apenas com a expressão e sem as chavetas ou retornos explícitos ?
Sim, agora podemos implementar propriedades somente leitura e métodos através das expressões lambdas.
A sintaxe é : membro => expressão
public class CalculaVenda
{
// Método usando somente expressão
public static int CalculaValorImposto(int percentual) => percentual * 30;
// Exibe um texto no console
public void Exibir() => WriteLine("Olá, Macoratti");
// Invoca outro método
public void Invocar() => Exibir();
// Possui dois parâmetros e retorna a soma mais 100
// Não precisa usar Return
public int Somar(int a, int b) => a + b + 100;
}
|
2- Operador de acesso condicional: ?.
Você ainda faz a verificação explicita da condição NULL antes de usar um objeto ou propriedade ?
if(dbConnection != null && dbConnection.Table != null && dbConnection.Table.Records != null)
{
Return dbConnection.Table.Records.Count;
}
|
Neste tipo de cenário ás vezes precisamos realizar um monte de verificações de valores null para evitar o lançamento de exceções, e neste cenário podemos usar o operador ?. :
if(dbConnection?.Table?.Records)
{
Return dbConnection.Table.Records.Count;
}
|
Usando o operador condicional null(?.) podemos tornar o código menor, mais elegante e mais fácil de ler:
3- Inicialização automática de propriedades
Usando o recurso da inicialização automática de propriedades você pode inicializar propriedades sem usar um conjunto privado ou a necessidade de uma ter uma variável local.
class Pessoa
{
public string Nome { get; protected set; } = "José Carlos";
public string SobreNome { get; set; } = "Macoratti";
public int Idade { get; set; }
public string NomeCompleto => this.Nome + " " + SobreNome;
public string NomeInvertido => new string(this.Nome.Reverse().ToArray());
}
|
Menos código, mais desempenho, menor probabilidade de erro.
4- Declaração do parâmetro OUT durante a chamada do método
Esse recurso permite que você declare o parâmetro OUT durante a chamada do método, como mostrado abaixo.
public bool ConverteParaIntVerificaSeMaiorQue10(string value) { if (int.TryParse(value, out int valorConvertido) && valorConvertido > 10) { return true; } return false; } |
Estou declarando valorConvertido na chamada e fazendo a verificação.
5- Usar await em um bloco catch
No C# 6.0 em diante, podemos usar a palavra-chave await dentro dos blocos catch e finally.
try
{
throw new Exception();
}
catch
{
await Task.Delay(1000);
}
finally
{
await Task.Delay(1000);
}
|
Isso abre o caminho para executar um processo de manipulação ou fallback de exceção assíncrona, caso ocorra uma exceção durante uma chamada de processo assíncrona.
public async void Processa() { try { Processor processor = new Processor(); await processor.ProcessaAsync(); } catch (Exception exception) { ExceptionLogger logger = new ExceptionLogger(); // A operação de captura de erros também pode ser async agora await logger.HandleExceptionAsync(exception); } } |
Estes são os cinco recursos que podem te ajudar a escrever um código melhor.
"Vós me chamais
Mestre e Senhor, e dizeis bem, porque eu o sou.
Ora, se eu, Senhor e Mestre, vos lavei os pés, vós deveis também lavar os pés
uns aos outros.
Porque eu vos dei o exemplo, para que, como eu vos fiz, façais vós também."
João 13:13-15
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - StreamReader, StringReader e TextReader . Qual a ... - Macoratti
C# - Imprimindo um arquivo texto - Macoratti
C# - Usando OpenFileDialog - Macoratti
C# - Formatando arquivos textos - Macoratti
C# - Convertendo valores para o formato monetário
C# - Lendo e escrevendo em arquivos textos e binários - Macoratti
VB.NET - Conversão entre tipos de variáveis - Macoratti
C# - Localizando Arquivos - Macoratti