Dans le .NET Framework, au moins dans le langage C #, nous avons deux "versions" du type chaîne:
Il semble qu'ils soient interchangeables, mais le sont-ils vraiment? S'ils ne sont pas interchangeables, est-il généralement préférable d'utiliser l'un au lieu de l'autre, et dans quelles circonstances?
Eh bien selon le MSDN
string est un alias pour String dans le .NET Framework.
Où "String" est en fait System.String
.
Je dirais qu'ils sont interchangeables et qu'il n'y a aucune différence quand et où vous devez utiliser l'un ou l'autre.
Il serait préférable d'être cohérent avec celui que vous avez utilisé.
Comme indiqué, ce sont les mêmes choses et string
n'est qu'un alias de String
.
Pour ce que ça vaut, j'utilise string
pour déclarer des types - variables, propriétés, valeurs de retour et paramètres. Ceci est cohérent avec l'utilisation d'autres types de systèmes - int
, bool
, var
etc (bien que Int32
Et Boolean
soient également corrects ).
J'utilise String
lorsque j'utilise les méthodes statiques sur la classe String, comme String.Split()
ou String.IsNullOrEmpty()
. Je pense que cela a plus de sens parce que les méthodes appartiennent à une classe, et cela est cohérent avec la façon dont j'utilise d'autres méthodes statiques.
Je suggère d'utiliser des minuscules string
. String
en majuscule utilisera la première classe nommée String qu'il trouve dans les espaces de noms importés ... qui est généralement System.String
. Il est possible que votre propre classe String soit utilisée à la place.
string
est un mot clé C # qui est simplement un alias pour le System.String
..mais comme c'est un mot-clé, votre éditeur de coloration syntaxique/IDE l'affichera en couleur de mot-clé, comme int, double, if, else, etc. Stylistiquement, vous préférerez peut-être utiliser le mot-clé plutôt que System.String
tapez (ou simplement String
après avoir terminé using System;
).
Il s'agit cependant d'un créneau, car bien que bool
, char
, int
, double
et string
sont tous des alias de mots clés pour les types de système , string
est un impaire car il s'agit d'un type de référence et les autres sont des types de valeur.
string
n'est qu'un alias pour String
, ils sont finalement les mêmes.
Vous pouvez utiliser celui que vous préférez, bien que j'utilise généralement string
lorsque je prévois de l'utiliser un peu comme un type de données primitif (similaire à int
, float
ou bool
) et String
lorsque je prévois de l'utiliser comme objet/classe. Par exemple:
string foo = " ";
if (String.isNullOrWhitespace(foo))
{
// ...
}
Dans le cas ci-dessus, je prévois d'utiliser foo
simplement pour stocker du texte (en fait comme une primitive), donc j'utilise string
; cependant, lorsque j'appelle String.isNullOrWhitespace(string)
j'utilise String
. Je le fais, car généralement la première lettre des noms de classe est en majuscule (String
) tandis que la première lettre des primitives (telles que int
) ne le sont pas.