A nova e melhorada C#: Conheça a C# 6.0 – Parte 2
Se ainda não viu, veja a parte 1 aqui.
A mais nova versão da linguagem C#, a melhorada C# 6.0, foi lançada pela Microsoft juntamente com a versão preview do Visual Studio 2015. Nessa versão foram adicionados novos recursos, todos destinados a tornar o código mais limpo e mais claro. Nós iremos abordar aqui os recursos Null-Conditional Operator e Expression-Bodied, que já podem ser utilizados em soluções que utilizam o Visual Studio 2015.
Sumário
- 1 Null-Conditional Operator
- 2 Expression-Bodied Functions And Properties:
- 3 Conclusão
- 3.0.1 http://www.c-sharpcorner.com/UploadFile/20c06b/see-whats-new-in-C-Sharp-6-and-visual-studio-2015/
- 3.0.2 https://msdn.microsoft.com/en-us/magazine/dn802602.aspx
- 3.0.3 http://www.mikesdotnetting.com/article/271/7-c-6-0-features-that-every-asp-net-developer-should-know-about
- 3.0.4 https://msdn.microsoft.com/en-us/magazine/Dn879355.aspx
- 3.0.5
- 3.0.6 Por: Davi Lucas Gomes
- 3.0.7 Revisão: Jéssica Saliba
Null-Conditional Operator
Considere o seguinte trecho de código:
public static string Truncate(string value, int length)
{
string result = value;
if (value != null) // Desconsidere o caso de string vazia.
{
result = value.Substring(0, Math.Min(value.Length, length));
}
return result;
}
Se não é feita alguma validação, sobre a nulidade do parâmetro value, o método Truncate vai retornar o famoso NullReferenceException. O problema surge quando há a necessidade de se realizar validações dessa natureza, várias vezes, de acordo com o número de variáveis processadas. O que poderia implicar em uma quantidade considerável de código burocrático que não contribui em nada para a performance da aplicação. Com a C# 6.0, utilizando operador Null Conditional [?.], o código anterior pode ser reescrito sucintamente da seguinte forma:
public static string Truncate(string value, int length)
{
return value?.Substring(0, Math.Min(value.Length, length));
}
Uma aplicação particularmente útil do operador nulo condicional resolve uma peculiaridade do C # que existe desde C # 1.0: a validação de valor vazio antes de invocar um delegate. Considere o código C # 2.0 abaixo:
class Theremostat
{
event EventHandler OnTemperatureChanged;
private int _Temperature;
public int Temperature
{
get
{
return _Temperature;
}
set
{
EventHandler localOnChanged =
OnTemperatureChanged;
if (localOnChanged != null)
{
_Temperature = value;
localOnChanged(this, value);
}
}
}
}
Todo o “set” da propriedade Temperature se resume se utilizado o operador Null-Conditional, ao código abaixo:
_Temperature = value;
OnTemperatureChanged?.Invoke(this, value);
Expression-Bodied Functions And Properties:
Expression-Bodied é outro exemplo de recurso para simplificação de sintaxe já nativo na versão C# 6.0. Basicamente com esse recurso é possível agora utilizar expressões lambda para declarações de conteúdo de blocos, que podem ser funções, propriedades, etc. Por exemplo, sem utilizar o recurso Expression-Bodied, a declaração da função Move poderia ser feita da seguinte forma:
public Point Move(int dx, int dy)
{
return new Point(x + dx, y + dy);
}
Utilizando o recurso de Expression-Bodied é possível redefinir o código da seguinte forma:
public Point Move(int dx, int dy) => new Point(x + dx, y + dy);
É também possível utilizar esse recurso para a declaração de propriedades read-only, de forma sucinta, conforme o código abaixo:
public class Count
{
public int Number { get; set; }
public int NextNumber => this.Number + 1;
}
Conclusão
A utilização da maioria dos recursos implementados nessa nova versão da C#, pode tornar a leitura do código implementado mais simples, com menos linhas de código, e, portanto, pode tornar menos penosa a atividade de manutenção do sistema, principalmente tratando-se de projetos grandes.
Referências:
http://www.c-sharpcorner.com/UploadFile/20c06b/see-whats-new-in-C-Sharp-6-and-visual-studio-2015/
https://msdn.microsoft.com/en-us/magazine/dn802602.aspx
http://www.mikesdotnetting.com/article/271/7-c-6-0-features-that-every-asp-net-developer-should-know-about
https://msdn.microsoft.com/en-us/magazine/Dn879355.aspx
Por: Davi Lucas Gomes
Revisão: Jéssica Saliba
Produtos Digitais
Confira outros artigos
FinOps: a ponte entre inovação tecnológica e sustentabilidade financeira nas organizações
Nos últimos anos, o FinOps tem se destacado como uma força vital na interseção entre o departamento financeiro e a TI, principalmente no que diz respeito à gestão de recursos em ambientes de nuvem. Essa solução nasceu da necessidade de alinhar os objetivos financeiros e operacionais das empresas, a fim de criar uma ponte sólida […]
Produtos Digitais
Desenvolvimento Android x iOS: 10 recomendações para o desenvolvimento produtivo
Entre agosto de 2022 e junho de 2023, o mercado de aplicativos móveis experimentou um crescimento notável, projetando um aumento anual de 13,4% até 2030, alcançando um mercado estimado em US$ 187,58 bilhões. E, certamente, a tendência é que essa expansão continue exponencialmente nos próximos anos. Portanto, agora é a hora de explorar as oportunidades […]
Produtos Digitais
Desenvolvimento Mobile ou Web: a integração de dispositivos para uma experiência omnichannel
Em 1977, Ken Olsen, fundador da DEC – Digital Equipment Corporation –, proferiu a frase “There is no reason anyone would want a computer in their home” (em tradução livre: “Não há motivo para alguém querer um computador em sua casa”). Já em 2007, a Apple confirmou que Olsen estava equivocado ao apresentar o primeiro […]
Produtos Digitais