string (Referencia de C#)
El tipo string representa una secuencia de cero o más caracteres Unicode. string es un alias de String en .NET Framework.
Aunque string es un tipo de referencia, los operadores de igualdad (== y !=) se definen para comparar los valores de objetos string, no las referencias. De esta forma, es más intuitivo comprobar la igualdad entre cadenas. Por ejemplo:
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Esto presenta "True" y, después, "False" porque el contenido de las cadenas es equivalente, pero a y b no hacen referencia a la misma instancia de cadena.
El operador + concatena cadenas:
string a = "good " + "morning";
Esto crea un objeto de tipo string que contiene "good morning".
Las cadenas son inmutables: no se puede cambiar el contenido de un objeto de tipo string una vez creado el objeto, aunque pudiera parecer por la sintaxis utilizada que es posible realizar esta operación. Por ejemplo, al escribir este código, el compilador crea en realidad un nuevo objeto de tipo string para almacenar la nueva secuencia de caracteres, y el nuevo objeto se asigna a b. La cadena "h" es elegible para la recolección de elementos no utilizados.
string b = "h";
b += "ello";
El operador [] se puede utilizar para tener acceso de sólo lectura a caracteres individuales de un objeto string:
string str = "test";
char x = str[2]; // x = 's';
Los literales de cadena son objetos de tipo string que se pueden escribir de dos formas: entre comillas o entre comillas y precedidos de @. Los literales de cadena se deben encerrar entre comillas ("):
"good morning" // a string literal
Los literales de cadena pueden contener cualquier literal de carácter. Se incluyen las secuencias de escape. En el siguiente ejemplo, se usa la secuencia de escape \\ para la barra diagonal inversa, \u0066 para la letra f y \n para una nueva línea.
string a = "\\\u0066\n";
Console.WriteLine(a);
Nota
El código de escape \udddd (donde dddd es un número de cuatro dígitos) representa el carácter Unicode U+dddd. También se reconocen los códigos de escape Unicode de 8 dígitos: \Udddddddd.
Los literales de cadena textuales empiezan con @ y se encierran entre comillas dobles. Por ejemplo:
@"good morning" // a string literal
La ventaja de las cadenas textuales es que las secuencias de escape no se procesan, lo que facilita la escritura, por ejemplo, de un nombre de archivo completo:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
Para incluir comillas tipográficas en una cadena precedida del símbolo @, escriba las comillas dos veces:
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
Otro uso del símbolo @ consiste en utilizar identificadores de referencia (/reference) que sean palabras clave de C#.
Para obtener más información sobre las cadenas en C#, vea Cadenas (Guía de programación de C#).
Ejemplo
class SimpleStringTest
{
static void Main()
{
string a = "\u0068ello ";
string b = "world";
Console.WriteLine( a + b );
Console.WriteLine( a + b == "Hello World" ); // == performs a case-sensitive comparison
}
}
/* Output:
hello world
False
*/
Especificación del lenguaje C#
Para obtener más información, vea la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
Referencia
Tipos de referencia (Referencia de C#)
Tipos de valor (Referencia de C#)
Conceptos
Procedimientos recomendados para el uso de cadenas en .NET Framework
Otros recursos
Operaciones básicas de cadenas
Tabla de formatos de presentación para valores numéricos (Referencia de C#)