Share via


string (référence C#)

Le type string représente une séquence de zéros ou plusieurs caractères Unicode. string est un alias pour String dans .NET Framework.

Bien que string soit un type référence, les opérateurs d'égalité (== et !=) sont définis pour comparer les valeurs d'objets string, pas de références. Le test d'égalité des chaînes est ainsi plus intuitif. Par exemple :

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

Cela affiche "True", puis "False" parce que le contenu des chaînes est équivalent, mais a et b ne font pas référence à la même instance de chaîne.

L'opérateur + concatène les chaînes :

string a = "good " + "morning";

Cela crée un objet de chaîne qui contient "good morning".

Les chaînes sont immuables – le contenu d'un objet chaîne ne peut pas être modifié une fois que l'objet a été créé, même si la syntaxe peut laisser croire que la modification est possible. Par exemple, lorsque vous écrivez ce code, le compilateur crée en fait un objet String pour stocker la nouvelle séquence de caractères et ce nouvel objet est assigné à b. La chaîne « h » est ensuite prête pour le garbage collection.

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

L'opérateur [] permet d'accéder en lecture seule aux différents caractères d'une string :

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

Les littéraux de chaîne sont de type string et sont indiqués entre des guillemets, avec ou sans le symbole @. Les littéraux de chaîne entre guillemets, mais sans symbole @ sont entourés de guillemets doubles (") :

"good morning"  // a string literal

Les littéraux de chaîne peuvent contenir n'importe quel littéral de caractère. Les séquences d'échappement sont incluses. L'exemple suivant utilise la séquence d'échappement \\ pour la barre oblique inverse, \u0066 pour la lettre f, et \n pour le saut de ligne.

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

Notes

Le code d'échappement \udddd (où dddd est un nombre à 4 chiffres) représente le caractère Unicode U+dddd.Les codes d'effacement Unicode à huit chiffres sont également reconnus : \Udddddddd.

Les littéraux de chaîne textuels commencent par le symbole @ et sont également entourés de guillemets anglais doubles ("). Par exemple :

@"good morning"  // a string literal

Les chaînes textuelles permettent de spécifier que les séquences d'échappement ne doivent pas être traitées, ce qui facilite l'écriture d'un nom de fichier qualifié complet, par exemple :

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

Pour ajouter des guillemets doubles au sein d'une chaîne entre guillemets avec le symbole @, doublez-les :

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

Le symbole @ peut également être employé avec des identificateurs référencés (/reference) qui sont des mots clés C#.

Pour plus d'informations sur les chaînes en C#, consultez Chaînes (Guide de programmation C#).

Exemple

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

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Référence

Mots clés C#

Types référence (référence C#)

Types valeur (référence C#)

Concepts

Guide de programmation C#

Meilleures pratiques pour l'utilisation de chaînes dans le .NET Framework

Guide de programmation C#

Création de nouvelles chaînes dans .NET Framework

Autres ressources

Référence C#

Opérations de chaînes de base dans .NET Framework

Tableau des formats des résultats numériques (référence C#)