Press "Enter" to skip to content

C# 6 – String Interpolation

Hora de começar uma série simples e rápida sobre alguns dos novos recursos disponíveis no C# 6. E hoje vou começar com um que me agradou, vamos falar sobre string interpolation.

Uma breve definição sobre o que é. Fonte.

In computer programming, string interpolation or variable interpolation (also variable substitution or variable expansion) is the process of evaluating a string literal containing one or more placeholders, yielding a result in which the placeholders are replaced with their corresponding values. It is a form of simple template processing.[1] or, in formal terms, a form of Quasi-quotation (or logic substitution interpretation). String interpolation allows for easier and more intuitive string formatting and content-specification compared with string concatenation.[2]

Em 2010 (faz tempo hein) eu escrevi um post aqui no blog mostrando formas e diferenças de desempenho na concatenação de strings. Até poderia acrescentar a concatenação com string interpolation ai na briga mas não faz diferença de performance mas não faz diferença, mas esse é um assunto para depois ;).

Bom resumindo bem resumido conseguimos concatenar strings de uma forma bem mais natural, eu acho, do que o que estamos acostumados a utilizar. Acho que na maioria dos casos o string.Format() é o método mais utilizado. Apesar de simples temos que nos preocupar com os índices, qual valor vai em qual índice.

Bom e como utilizamos esse tal de string interpolation? Veja abaixo a mesma concatenação feita de formas diferentes.

Acho o segundo exemplo bem mais legível, não?! 🙂

Utilizar string interpolation é simples. $”sua string {valor1} bla {valor2}”. Sem preocupações com índices e conseguindo na construção da string o que vai em cada lugar.

Antes de mostrar porque não vale colocar string interpolation no teste de performance segue alguns testes onde poderá ver mais alguns testes mais interessantes.

Muito bem, vamos falar sobre performance.

Se você não conhece IL eu recomendo a série que o Elemar Jr escreveu. Aproveita também confere o FluentIL.

Bom nosso string interpolation não passa de um syntatic sugar. Ou seja, por baixo dos panos ele utiliza string.Format :).

Veja o IL gerado do primeiro código que mostrei aqui no post. Veja entre as linhas 39 e 50 que com string.format ou string interpolation por baixo dos panos é sempre string.format. Se quer ver o IL dos seus códigos utilize o ILDasm no Windows ou monodis seuarquivo.exe utilizando Mono no Mac ou Linux.

Por hoje é isso.

Abraços!

  • Vitor Canova

    Tá, é o format como fica? dá pra tentar algo do tipo

    $”{dataNascimento:dd/MM}”

    ?

    Outra coisa, tem certeza que isso não tem nas versões anteriores do C# e só o que precisa é o Visual Studio 2015? O “var” no finado Visual Studio 2008 era assim.

    • Márcio Fábio Althmann

      E ai Vitor blz?

      Cara sobre o format funciona sem problemas, só não coloquei exemplos. Da uma olhada aqui https://msdn.microsoft.com/en-us/library/dn961160.aspx

      Quanto ao Visual Studio confesso que não faço ideia. Fiz os testes no Xamarin pelo Mac. No trabalho onde utilizo Windows ainda não migramos para o vs2015 nem o novo .net.

    • E ai Vitor blz?

      Cara sobre o format funciona sem problemas, só não coloquei exemplos. Da uma olhada aqui https://msdn.microsoft.com/en-us/library/dn961160.aspx

      Quanto ao Visual Studio confesso que não faço ideia. Fiz os testes no Xamarin pelo Mac. No trabalho onde utilizo Windows ainda não migramos para o vs2015 nem o novo .net.

      • Vitor Canova

        Fiz um teste numa máquina de teste no trabalho. O null propagation operator (esse o nome né?) funcionou com target no framework 4. 😉

  • GabrielCapano

    Vitor, ele funciona em qualquer framework assim que compilado, porém você precisa do framework 4.6 instalado na máquina de qualquer jeito…

    • Vitor Canova

      Mas só por causa do Visual Studio, né? No servidor, depois de compilado, funcionaria mesmo se não tivesse, certo?