string (Referencia de C#)string (C# Reference)

El tipo string representa una secuencia de cero o más caracteres Unicode.The string type represents a sequence of zero or more Unicode characters. string es un alias de String en .NET.string is an alias for String in .NET.

Aunque string es un tipo de referencia, se definen los operadores de igualdad (== y !=) para comparar los valores de los objetos string, no las referencias.Although string is a reference type, the equality operators (== and !=) are defined to compare the values of string objects, not references. Esto hace que las pruebas de igualdad entre cadenas sean más intuitivas.This makes testing for string equality more intuitive. Por ejemplo:For example:

string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);

Se muestra "True" y luego "False" porque el contenido de las cadenas es equivalente, pero a y b no hacen referencia a la misma instancia de cadena.This displays "True" and then "False" because the content of the strings are equivalent, but a and b do not refer to the same string instance.

El operador + concatena cadenas:The + operator concatenates strings:

string a = "good " + "morning";

Crea un objeto de cadena que contiene "good morning".This creates a string object that contains "good morning".

Las cadenas son inmutables: el contenido de un objeto de cadena no se puede modificar una vez creado el objeto, aunque la sintaxis parezca indicar que se puede hacer.Strings are immutable--the contents of a string object cannot be changed after the object is created, although the syntax makes it appear as if you can do this. Por ejemplo, al escribir este código, el compilador crea en realidad otro objeto de cadena para almacenar la nueva secuencia de caracteres, y este nuevo objeto se asigna a b.For example, when you write this code, the compiler actually creates a new string object to hold the new sequence of characters, and that new object is assigned to b. La cadena "h" pasa a ser apta para la recolección de elementos no utilizados.The string "h" is then eligible for garbage collection.

string b = "h";
b += "ello";

El operador [] puede usarse para acceso de solo lectura a determinados caracteres de un objeto string:The [] operator can be used for readonly access to individual characters of a string:

string str = "test";
char x = str[2];  // x = 's';

De igual manera, el operador [] también puede usarse para recorrer en iteración cada carácter en string:In similar fashion, the [] operator can also be used for iterating over each character in a string:

string str = "test";

for (int i = 0; i < str.Length; i++)
{
  Console.Write(str[i] + " ");
}
// Output: t e s t

Los literales de cadena son del tipo string y se pueden escribir de dos formas, entre comillas y @-quoted.String literals are of type string and can be written in two forms, quoted and @-quoted. Los literales de cadena se incluyen entre comillas dobles ("):Quoted string literals are enclosed in double quotation marks ("):

"good morning"  // a string literal

Los literales de cadena pueden contener cualquier literal de carácter.String literals can contain any character literal. Se incluyen secuencias de escape.Escape sequences are included. En el ejemplo siguiente se usa una secuencia de escape \\ para la barra diagonal inversa, \u0066 para la letra f y \n para la nueva línea.The following example uses escape sequence \\ for backslash, \u0066 for the letter f, and \n for newline.

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.The escape code \udddd (where dddd is a four-digit number) represents the Unicode character U+dddd. También se reconocen los códigos de escape Unicode de 8 dígitos: \Udddddddd.Eight-digit Unicode escape codes are also recognized: \Udddddddd.

Los literales de cadena textual empiezan por @ y también se incluyen entre comillas dobles.Verbatim string literals start with @ and are also enclosed in double quotation marks. Por ejemplo:For example:

@"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 de, por ejemplo, un nombre de archivo completo:The advantage of verbatim strings is that escape sequences are not processed, which makes it easy to write, for example, a fully qualified file name:

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"

Para incluir un signo de comillas dobles en una cadena @-quoted, duplíquelo:To include a double quotation mark in an @-quoted string, double it:

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.

Para saber qué otros usos tiene el carácter especial @, vea @ -- identificador textual.For other uses of the @ special character, see @ -- verbatim identifier.

Para obtener más información sobre las cadenas en C#, vea Strings (Cadenas [Guía de programación de C#]).For more information about strings in C#, see Strings.

EjemploExample

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#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also