Quelle est la différence entre String et string en C# ?

Dans un code C#, vous pouvez rencontrer le mot-clé string pour désigner une chaîne de caractères, mais également le mot-clé String.

Lorsque vous lisez le code d'une application développée en C#, vous pouvez rencontrer le mot-clé string pour désigner une chaîne de caractères, mais également le mot-clé String. En utilisant l'environnement de développement Visual Studio, les deux mots-clés sont affichés avec une couleur différente, mais utiliser l'un ou l'autre ne modifie pas le code.

Cette particularité est possible car le mot-clé string est un alias de la classe System.String. Comme dans les logiciels de développement, la directive using System; est présente par défaut dans les fichiers, le mot-clé String fonctionne au lieu de System.String. Il n'y a donc aucune différence dans l'utilisation de ces deux mots-clés. Dans le langage C#, les types standards de la classe System ont tous des alias. La plupart n'ont qu'une différence dans la majuscule. C'est par exemple le cas pour les classes boolean ou byte. C'est différent pour l'alias int. Par défaut, il correspond à la classe System.Int32. Si vous souhaitez utiliser plutôt un entier codé sur 16 bits, il faut explicitement utiliser le type Int16.

Dans les exemples disponibles sur le site de Microsoft pour documenter le langage C#, il est recommandé d'utiliser le mot-clé string pour typer une variable et le mot-clé String lorsque l'on fait appel aux méthodes de la classe String.

string chaine = String.Format(A {0}, la température est de {1}°C., DateTime.Now, 20);

Si vous utilisez l'outil StyleCop, un logiciel qui analyse le code source de votre application pour appliquer des règles de nomenclature dans votre code et uniformiser vos fichiers, celui-ci recommande de systématiquement utiliser les alias.^M.