string (Referência de C#)string (C# Reference)

O tipo string representa uma sequência de zero ou mais caracteres Unicode.The string type represents a sequence of zero or more Unicode characters. string é um alias de String no .NET.string is an alias for String in .NET.

Embora string seja um tipo de referência, os operadores de igualdade (== e !=) são definidos para comparar os valores dos objetos string, não referências.Although string is a reference type, the equality operators (== and !=) are defined to compare the values of string objects, not references. Isso torna o teste de igualdade de cadeia de caracteres mais intuitivo.This makes testing for string equality more intuitive. Por exemplo: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);

Isso exibe "True" e, em seguida, "False" porque os conteúdos das cadeias de caracteres são equivalentes, mas a e b não fazem referência à mesma instância da cadeia de caracteres.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.

O operador + concatena as cadeias de caracteres:The + operator concatenates strings:

string a = "good " + "morning";

Isso cria um objeto de cadeia de caracteres que contém “good morning”.This creates a string object that contains "good morning".

Cadeias de caracteres são imutável – o conteúdo de um objeto de cadeia de caracteres não pode ser alterado depois que o objeto é criado, embora a sintaxe faça com que pareça que você pode fazer isso.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 exemplo, quando você escreve esse código, o compilador na verdade cria um novo objeto de cadeia de caracteres para manter a nova sequência de caracteres e esse novo objeto é atribuído 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. A cadeia de caracteres "h" é então qualificada para coleta de lixo.The string "h" is then eligible for garbage collection.

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

O operador [] pode ser usado para o acesso somente leitura a caracteres individuais de uma 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 maneira semelhante, o operador [] pode ser usado para iterar em cada caractere em uma 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

Literais de cadeia de caracteres são do tipo string e podem ser escritos de duas formas, entre aspas e @-quoted.String literals are of type string and can be written in two forms, quoted and @-quoted. Os literais de cadeia de caracteres entre aspas são colocados entre aspas duplas ("):Quoted string literals are enclosed in double quotation marks ("):

"good morning"  // a string literal

Os literais de cadeia de caracteres podem conter qualquer literal de caractere.String literals can contain any character literal. Sequências de escape são incluídas.Escape sequences are included. O exemplo a seguir usa a sequência de escape \\ de barra invertida, \u0066 para a letra f e \n para a nova linha.The following example uses escape sequence \\ for backslash, \u0066 for the letter f, and \n for newline.

string a = "\\\u0066\n";
Console.WriteLine(a);

Observação

O código de escape \udddd (em que dddd é um número de quatro dígitos) representa o caractere Unicode U+dddd.The escape code \udddd (where dddd is a four-digit number) represents the Unicode character U+dddd. Os códigos de escape Unicode de oito dígitos também são reconhecidos: \Udddddddd.Eight-digit Unicode escape codes are also recognized: \Udddddddd.

Os literais de cadeia de caracteres textuais começam com @ e também são colocados entre aspas duplas.Verbatim string literals start with @ and are also enclosed in double quotation marks. Por exemplo:For example:

@"good morning"  // a string literal

A vantagem das cadeias de caracteres textuais é que as sequências de escape não são processadas, o que torna mais fácil escrever, por exemplo, um nome de arquivo totalmente qualificado: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 aspas duplas em uma cadeia de caracteres @-quoted, dobre-a:To include a double quotation mark in an @-quoted string, double it:

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

Para saber outras formas de usar o caractere especial @, confira @ – identificador textual.For other uses of the @ special character, see @ -- verbatim identifier.

Para obter mais informações sobre cadeias de caracteres, consulte Cadeias de caracteres.For more information about strings in C#, see Strings.

ExemploExample

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
 */

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee also