Fala Galera,
Dando continuidade a série das novidades do C# 6.0, venho falar sobre um novo recurso chamado Expression-Bodied. Esse recurso já existe um há bom tempo no F# e agora foi incorporado ao C#.
Através desse novo recurso podemos escrever métodos e propriedades de forma muito mais “clean” e para demonstrar o uso deste recurso, vou comentar sobre uma nova funcionalidade chamada String Interpolation.
Não deixe de conferir o vídeo no canal Developers .NET explicando o passo a passo sobre Expression-Bodied com String Interpolation
String Interpolation
Acho que ninguém tem dúvidas que o método String.Format é um dos mais úteis e usados dentro da linguagem C#, correto?
Com o novo recurso chamado String Interpolation é possível fazer a mesma operação do String.Format de forma muito simples.
Veja o exemplo do antes e depois. (Note que estou usando o exemplo do primeiro post sobre as novidades do C# 6.0, veja aqui)
public class Endereco { public String Cep { get; set; } public String Logradouro { get; set; } public String Complemento { get; set; } public String Bairro { get; set; } public String Cidade { get; set; } public String Estado { get; set; } public override string ToString() { return String.Format("{0}, {1}, {2}, {3}, {4}, {5}", this.Logradouro, this.Complemento, this.Bairro, this.Cidade, this.Estado, this.Cep); } }
Agora podemos fazer de uma maneira muito mais simples:
public class Endereco { public String Cep { get; set; } public String Logradouro { get; set; } public String Complemento { get; set; } public String Bairro { get; set; } public String Cidade { get; set; } public String Estado { get; set; } public override string ToString() { return $"{this.Logradouro}, {this.Complemento}, {this.Bairro}, {this.Cidade}, {this.Estado}, {this.Cep}"; } }
Veja outro exemplo utilizando String Interpolation para formatação de paramêtros
public class Usuario { public String Nome { get; } public String Email { get; } public DateTime DtNascimento { get; } public List<Endereco> Enderecos => new List<Endereco>(); public Usuario(string date) { this.DtNascimento = ToDateTime(date); } public override string ToString() { return $"{this.Nome}, {this.DtNascimento:dd/MM/yyyy}"; } }
Eu achei bem interessante essa nova funcionalidade não acham ?
Expression-bodied
No exemplo acima de String Interpolation, fizemos um “override” do método ToString() que tem somente uma linha de código retornando um valor formatado, isso é bem comum no nosso dia-dia e agora podemos simplificar a escrita desses métodos de forma rápida utilizando a nova funcionalidade Expression-Bodied.
Veja o exemplo abaixo:
public class Endereco { public String Cep { get; set; } public String Logradouro { get; set; } public String Complemento { get; set; } public String Bairro { get; set; } public String Cidade { get; set; } public String Estado { get; set; } public override string ToString() => $"{this.Logradouro}, {this.Complemento}, {this.Bairro}, {this.Cidade}, {this.Estado}, {this.Cep}"; }
Também podemos usar Expression-bodied em propriedades:
public class Usuario { public String Nome { get; } public String Email { get; } public DateTime DtNascimento { get; } public List<Endereco> Enderecos => new List<Endereco>(); public Usuario(string date) { this.DtNascimento = ToDateTime(date); } }
Note que com essa nova sintaxe não precisamos escrever o get, ele já está implícito nessa nova forma de escrita.
E ai gostaram dessas novas funcionalidades? Não deixe de comentar.
Até o próximo post não qual irei falar sobre Null Propagation e sobre o NameOf. Não deixe de se inscrever no meu canal Developers .NET (clique aqui e inscreva-se)
Abs e até o próximo post.
Oi Rafael!
Parabéns pela iniciativa! Achei bastante interessante sobre o assunto de Expression-bodied e string interpolation. Estou ansioso pelo os próximos que vão vir, abraço!
Olá Thiago,
Bom que tenha gostado, eu gostei muito dessas novas funcionalidades, principalmente o expression-bodied, acho que vai facilitar muito o nosso trabalho.
Aproveite e se inscreva no meu canal do youtube Developers.Net e espalhe para seus amigos o meu blog
=]
Abs.,