CodeGym /Cours /C# SELF /Conversion entre les types de données

Conversion entre les types de données

C# SELF
Niveau 2 , Leçon 3
Disponible

1. Pourquoi on a besoin de convertir les types ?

C# est un langage fortement typé. Si l’ordi a une “boîte” pour un nombre, essayer d’y mettre du texte, c’est un peu comme vouloir brancher une fourchette dans un port USB. Le compilateur va pas te laisser faire ça ! 😡

Mais dans la vraie vie, on bosse souvent avec différents types de données en même temps. Par exemple, t’as une chaîne qui contient un nombre. C’est là qu’on a besoin de la conversion (ou transformation) de types.

Regarde cet exemple. Disons que tu veux stocker le nombre d’utilisateurs :

int a = 1;
int b = "2";
int c = "trois";

Le compilateur va direct te dire : “Tu me prends pour qui ? Je sais pas convertir une chaîne en nombre tout seul, faut que tu le fasses explicitement".

En C#, il y a plusieurs façons de convertir, chacune avec ses avantages, inconvénients et pièges classiques.

2. Convertir int en string

Dans notre taf, on a souvent besoin d’obtenir une représentation textuelle d’un nombre : genre pour l’afficher à l’écran, le sauvegarder dans un fichier, l’envoyer sur le réseau, le coller à du texte, etc. En C#, il y a plusieurs méthodes pour ça, chacune pratique selon la situation.

La méthode ToString()

C’est la méthode de base et la plus utilisée :

int number = 42;
string str = number.ToString();  // str == "42"

ToString() convertit le nombre en chaîne avec le format par défaut pour cette structure.

Interpolation de chaîne ($"...")

Méthode moderne, super pratique pour composer des chaînes avec des variables :

int number = 42;
string str = $"Nombre : {number}";

L’interpolation de chaîne appelle automatiquement ToString() pour la valeur insérée.

Tu peux combiner plusieurs variables et même préciser le format :

int number = 42;
string str = $"{number:D5}"; // "00042" — cinq chiffres avec des zéros devant

Concaténation avec une chaîne vide

Ancienne méthode, mais ça marche :

int number = 42;
string str = number + "";

Cette approche est rapide pour les cas simples, mais c’est moins clair pour quelqu’un qui lit le code.

3. Conversion implicite en chaîne

Comme on l’a déjà dit, les devs de C# ont fait en sorte que toutes les variables, objets, expressions en C# peuvent être convertis en string.

En plus, ça se fait automatiquement quand on additionne un string avec un autre type. Exemples :

int a = 5;
string name = "Ania" + a;            //  name contient la chaîne Ania5

int a = 5;
string city = a + "New York" + a;   //  city contient la chaîne 5New York5

int number = 10;
string code = "Yo";
string message = "Salut ! " + number + code; //  message contient la chaîne Salut ! 10Yo

Dans ces trois exemples, on additionne tranquillou des variables de type int et string, et au final on obtient toujours un string.

Important ! Tu peux pas faire d’opérations arithmétiques avec le type string. Même si la chaîne ne contient que des chiffres.

Exemples :

int a = 5;
string name = "1" + a;              //  name contient la chaîne 15

int a = 5;
string city = a + "9" + a;          //  city contient la chaîne 595

int number = 10;
string code = "10";
string message = "" + number + code; // message contient la chaîne 1010 

L’addition se fait de gauche à droite, donc le résultat peut être un peu surprenant. Exemple :

int a = 5;
string name = a + a + "1" + a;      // name contient la chaîne 1015

Ordre d’exécution : ((a + a) + "1") + a

4. Conversion d’une chaîne en nombre

Pour convertir un nombre en chaîne en C#, il suffit de l’additionner à une chaîne vide :

string str = "" + nombre;

Mais alors, comment convertir une chaîne en nombre ? Ben, tu peux pas convertir n’importe quelle chaîne en nombre. Mais si la chaîne ne contient que des chiffres, là c’est bon. Pour ça, le type int a une méthode spéciale Parse().

Ça ressemble à ça :


int x = int.Parse("chaîne")
Conversion d’une chaîne en nombre

int x — c’est la déclaration d’une variable entière x, et chaîne — c’est le nombre écrit sous forme de chaîne (une chaîne composée de chiffres).

Exemples :

string str = "123";
int number1 = int.Parse(str);        //  number1 contient le nombre 123;

int number2 = int.Parse("321");      //  number2 contient le nombre 321

int number3 = int.Parse("321" + 0);  //  number3 contient le nombre 3210

int number4 = "321"; //  Ne se compile pas : variable de type int, mais la valeur est de type string

Ça marche aussi pour les valeurs négatives : la méthode int.Parse() est vraiment maligne.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION