Novidades do C# 6.0 – Parte 3 – Null Propagation e NameOf

20 jan

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

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *