Iba a usar una cadena textual pero escribí por error $ en lugar de @ .
Pero el compilador no me dio ningún error y se compiló correctamente.
Quiero saber qué es y qué hace. Lo busqué pero no pude encontrar nada.
Sin embargo, no es como una cadena textual porque no puedo escribir:
string str = $"text\"; ¿Alguien sabe qué significa $ antes de la cadena en C#?
string str = $"text";Estoy usando Visual Studio 2015 CTP.
$ es la abreviatura de String.Format y se usa con interpolaciones de cadenas, que es una característica nueva de C# 6. Como se usa en su caso, no hace nada, al igual que string.Format() no haría nada.
Se destaca cuando se usa para construir cadenas con referencia a otros valores. Lo que antes se tenía que escribir como:
var anInt = 1; var aBool = true; var aString = "3"; var formated = string.Format("{0},{1},{2}", anInt, aBool, aString);Ahora se convierte en:
var anInt = 1; var aBool = true; var aString = "3"; var formated = $"{anInt},{aBool},{aString}"; También hay una forma alternativa, menos conocida, de interpolación de cadenas usando $@ (el orden de los dos símbolos es importante). Permite que las características de una cadena @"" se mezclen con $"" para admitir interpolaciones de cadenas sin la necesidad de \\ en toda la cadena. Así que las siguientes dos líneas:
var someDir = "a"; Console.WriteLine($@"c:\{someDir}\b\c");dará salida:
c:\a\b\cCrea una cadena interpolada .
Desde MSDN
Se utiliza para construir cadenas. Una expresión de cadena interpolada parece una cadena de plantilla que contiene expresiones. Una expresión de cadena interpolada crea una cadena reemplazando las expresiones contenidas con las representaciones ToString de los resultados de las expresiones.
ex :
var name = "Sam"; var msg = $"hello, {name}"; Console.WriteLine(msg); // hello, SamPuede usar expresiones dentro de la cadena interpolada
var msg = $"hello, {name.ToLower()}"; Console.WriteLine(msg); // hello, sam Lo bueno de esto es que no necesita preocuparse por el orden de los parámetros como lo hace con String.Format .
var s = String.Format("{0},{1},{2}...{88}",p0,p1,..,p88);Ahora, si desea eliminar algunos parámetros, debe ir y actualizar todos los recuentos, lo cual ya no es el caso.
Tenga en cuenta que el antiguo y buen string.format sigue siendo relevante si desea especificar información cultural en su formato .
Código de ejemplo
public class Person { public String firstName { get; set; } public String lastName { get; set; } } // Instantiate Person var person = new Person { firstName = "Albert", lastName = "Einstein" }; // We can print fullname of the above person as follows Console.WriteLine("Full-Name - " + person.firstName + " " + person.lastName); Console.WriteLine("Full-Name - {0} {1}", person.firstName, person.lastName); Console.WriteLine($"Full-Name - {person.firstName} {person.lastName}");Producción
Full-Name - Albert Einstein Full-Name - Albert Einstein Full-Name - Albert EinsteinSon cadenas interpoladas . Puede usar una cadena interpolada en cualquier lugar donde pueda usar un literal de cadena. Cuando la ejecución de su programa ejecutaría el código con el literal de cadena interpolado, el código calcula un nuevo literal de cadena evaluando las expresiones de interpolación. Este cálculo se produce cada vez que se ejecuta el código con la cadena interpolada.
El siguiente ejemplo produce un valor de cadena en el que se han calculado todos los valores de interpolación de cadena. Es el resultado final y tiene tipo string. Todas las apariciones de llaves dobles (“{{“ and “}}”) se convierten en una sola llave.
string text = "World"; var message = $"Hello, {text}"; Después de ejecutar las 2 líneas anteriores, message variable contiene "Hola, mundo".
Console.WriteLine(message); // Prints Hello, WorldReferencia - MSDN