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
![Produtos digitais: implantação e operação](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F06%2FProdutos-digitais-implantacao-e-operacao.webp&w=1024&q=75)
Produtos digitais: entregas contínuas com IA
Nas últimas semanas, lançamos uma série de artigos sobre o uso de inteligência artificial no processo de construção de produtos digitais. Neles, apresentamos alguns aceleradores que a dti tem utilizado para potencializar a eficiência dos times. Abordamos a fase de concepção do produto, as atividades de gestão e design, o desenvolvimento do software e a […]
Produtos Digitais
![Inteligência Artificial: acelerando o design e gestão de produtos digitais. Computador com códigos coloridos](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F05%2Fshutterstock_2284126663-_1_-scaled.webp&w=1024&q=75)
Inteligência Artificial: acelerando o design e gestão de produtos digitais
Como aproveitar o melhor da Inteligência Artificial Generativa para gerar mais valor? Essa tem sido uma pergunta recorrente no mercado conforme as empresas buscam entender e adotar a tecnologia. Embora existam muitas dúvidas e hipóteses não comprovadas, parece ser consenso que os avanços na Inteligência Artificial impactarão significativamente muitas profissões. No relatório The economic potencial […]
Produtos Digitais
![IA Generativa: acelerando a concepção de produtos digitais. Foto de quadro com post-it e gráficos, numa ideação para conceber o produto](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F05%2Fjanela-planejamento0.webp&w=1024&q=75)
IA Generativa: acelerando a concepção de produtos digitais
Como as empresas podem responder às crescentes demandas por produtividade e eficiência em um mundo digital em constante mudança? O período pandêmico acelerou a digitalização de várias empresas e agora o desafio é outro. Entramos em uma era de incertezas, na qual não há mais espaço para desperdícios ou prolongados ciclos de entrega de software. […]
Produtos Digitais