web-dev-qa-db-fra.com

Différence entre "String" et "string" dans .NET et quelle est la meilleure?

Dans le .NET Framework, au moins dans le langage C #, nous avons deux "versions" du type chaîne:

  • "chaîne"
  • "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?

15
Cyberherbalist

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é.

30
ChrisF

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.

21
Kirk Broadhurst

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.

4
Bryan Boettcher

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.

4
JBRWilkinson

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.

2
BBB