Fala Galera,
Para encerrar com chave de ouro a série das novidades do C# 6.0, vamos falar sobre o Null Propagation e o nameof que são novos recursos adicionados no C# 6.0
Não deixe de conferir o vídeo no canal Developers .NET explicando sobre o Null Propagation e do novo keyword nameof
Vamos começar com o Null Propagation, eu gostei muito desse novo recurso e nos exemplos abaixo vocês verão o porque também irão gostar, confira só!
Null Propagation
Desde que começamos a aprender .NET seja com C# ou seja com VB nos deparamos com o tão temido NullReferenceException. Essa é uma exceção que é disparada quando um developer esquece de fazer uma checagem se objeto está nulo antes de chamar algum método ou propriedade desse objeto.
Agora com a nova atualização do C# podemos fazer uma essa checagem de uma maneira simples, confira abaixo o exemplo do antes e do depois.
public string Truncate(string value, int length) { if (!String.IsNullOrEmpty(value)) { return value.Substring(0, Math.Min(value.Length, length)); } return null; }
Compare agora como ficou
public string Truncate(string value, int length) { return value?.Substring(0, Math.Min(value.Length, length)); }
Olhe só esse outro exemplo
public class User { public string Name { get; set; } public string Email { get; set; } public List<Phone> Phones { get; set; } } public class Phone { public string DDD { get; set; } public string Number { get; set; } }
var user = new User(); Phone phone; if (user.Phones != null) phone = user.Phones.First();
Agora como podemos fazer de um jeito bem mais simples
var user = new User(); Phone phone = user.Phones?.First();
Muito interessante esse novo recurso, não acham ?
NameOf
Esse novo recurso irá ajudar muito nós developers a evitar o uso de “magic strings”. Quem nunca retornou uma exceção do tipo “ArgumentNullException”, para informar que algum parâmetro é obrigatório e é ai que o nameof entra.
Veja o exemplo abaixo:
public class User { public string Name { get; set; } public string Email { get; set; } public User(string name, string email) { if (String.IsNullOrEmpty(name)) throw new ArgumentNullException("name"); if (String.IsNullOrEmpty(email)) throw new ArgumentNullException("email"); } }
Notem as “magic strings” sendo usadas para disparar a exceção, agora vamos ver como fica utilizando o novo recurso nameof
public class User { public string Name { get; set; } public string Email { get; set; } public User(string name, string email) { if (String.IsNullOrEmpty(name)) throw new ArgumentNullException(nameof(name)); // Saída será name if (String.IsNullOrEmpty(email)) throw new ArgumentNullException(nameof(email)); // Saída será email } }
Então pessoal, chegamos ao fim da série das novidades do C# 6.0, o que acharam dessas novas funcionalidades, não deixem de comentar e aproveitem para se inscrever no meu canal Developer.NET (clique aqui e inscreva-se).
Abs e até o próximo post