Tenho corrido através de alguns exercícios de C# num livro, e deparei-me com um exemplo que me deixou perplexo. Directamente do livro, a linha de saída mostra como:
Console.WriteLine($"\n\tYour result is {result}.");
Agora eu, como se estivesse de pé, o código funciona e o "resultado duplo" mostra-se como esperado. Contudo, não compreendendo porque é que o $ está na frente da string, decidi retirá-lo, e agora o código produz o nome da array {resultado}
em vez do conteúdo. O livro não'não explica porque é que o $ está lá, infelizmente.
Tenho andado a pesquisar a ajuda VB 2015 e Google, relativamente à formatação de cordas e aos métodos de sobrecarga do Console.WriteLine. Não estou a ver nada que explique porque é o que é. Qualquer conselho seria apreciado.
It's a nova funcionalidade em C# 6 chamada Interpolated Strings
.
A forma mais fácil de o compreender é: uma expressão de corda interpolada cria uma corda substituindo as expressões contidas pelas representações ToString das expressões' resultados.
Para mais detalhes sobre isto, consulte MSDN.
Agora, pense um pouco mais sobre isso. Porquê esta característica é óptima?
Por exemplo, tem a classe Ponto
:
public class Point
{
public int X { get; set; }
public int Y { get; set; }
}
Criar 2 instâncias:
var p1 = new Point { X = 5, Y = 10 };
var p2 = new Point {X = 7, Y = 3};
Agora, pretende produzi-lo para o ecrã. As 2 maneiras que normalmente utiliza:
Console.WriteLine("The area of interest is bounded by (" + p1.X + "," + p1.Y + ") and (" + p2.X + "," + p2.Y + ")");
Como pode ver, a concatenação de cordas como esta torna o código difícil de ler e propenso a erros. Pode utilizar string.Format()
para o tornar mais agradável:
Console.WriteLine(string.Format("The area of interest is bounded by({0},{1}) and ({2},{3})", p1.X, p1.Y, p2.X, p2.Y));
Isto cria um novo problema:
Por estas razões, devemos utilizar uma nova funcionalidade:
Console.WriteLine($"The area of interest is bounded by ({p1.X},{p1.Y}) and ({p2.X},{p2.Y})");
O compilador mantém agora os lugares reservados para si para que não tenha de se preocupar em indexar o argumento certo porque simplesmente o coloca ali mesmo na corda.
Para o post completo, por favor leia este blogue.
é um conceito que línguas como o Perl já têm há bastante tempo, e agora vamos obter esta capacidade em C# também. Na Interpolação de Cordas, nós basta prefixar a corda com um $ (tal como usamos o @ para literalmente cordas). Depois, rodeamos simplesmente as expressões que queremos interpolar com aparelho de atadura (i.e. { e }):
É muito parecido com o String.Format(), mas em vez de um índice, é a própria expressão dentro do aparelho encaracolado. De facto, não deve ser uma surpresa que se pareça com String.Format() porque é realmente só isso - açúcar sintáctico que o compilador trata como String.Format() nos bastidores.
Uma grande parte é que o compilador mantém agora os lugares reservados para si, para que não tenha de se preocupar em indexar o argumento certo porque simplesmente o coloca ali mesmo na corda.
A interpolação de cordas C# é um método de concatenar, formatar e manipular cordas. Esta característica foi introduzida em C# 6.0. Utilizando a interpolação de cordas, podemos utilizar objectos e expressões como parte da operação interpolação de cordas.
A sintaxe da interpolação de cordas começa com um símbolo '$' e as expressões são definidas dentro de um parêntese {} utilizando a seguinte sintaxe.
{<interpolatedExpression>[,<alignment>][:<formatString>]}
Onde:
O seguinte exemplo de código concatenou uma corda onde um objecto, autor como parte da interpolação da corda.
string author = "Mohit";
string hello = $"Hello {author} !";
Console.WriteLine(hello); // Hello Mohit !
Leia mais em C#/.NET Little Wonders: Interpolação de Cordas em C# 6