|
Mathématiques dans C# : Conversion des valeurs |
|
|
Conversions implicites |
|
Dans la leçon 1, nous avons vu comment déclarer des variables des types entier, flottant, et chaîne de caractères. Nous avons également vu comment initialiser les variables. Si vous avez un programme avec un mélange de ces types de variables, vous pouvez être intéressé à convertir la valeur de l'une en l'autre. De même, dans la leçon 1, nous avons vu quelle quantité d'espace mémoire est exigée pour une variable de chaque type de données pour contenir sa valeur. Voici un résumé de ce que nous avons appris : |
Comme vous pouvez le voir, une valeur contenue par une variable byte peut s'adapter dans la mémoire réservée pour une variable int, qui peut être portée par une variable long. Grâce à ceci, vous pouvez assigner une valeur byte à une variable int, ou une variable int à une variable long. En outre, basé sur ceci, parce que la mémoire réservée pour une variable int est plus grande que celle réservée pour une double variable, vous pouvez assigner une variable du premier à une variable du dernier. Voici un exemple : using System;
class Program
{
static int Main()
{
int iNumber = 2445;
double dNumber = iNumber;
Console.WriteLine("Number = {0}", iNumber);
Console.WriteLine("Number = {0}\n", dNumber);
return 0;
}
}
Ceci produirait : Number = 2445 Number = 2445 Press any key to continue . . . Cette caractéristique est désigné sous le nom de conversion implicite.
En raison des conditions de mémoire, l'inverse directe de la conversion implicite n'est pas possible. Puisque la mémoire réservée pour une variable short est plus petite que celle d'un int, vous ne pouvez pas assigner la valeur d'une variable int à une variable short. Considérez le programme suivant : using System;
class Program
{
static int Main()
{
int iNumber = 168;
short sNumber = iNumber;
Console.WriteLine("Number = {0}", iNumber);
Console.WriteLine("Number = {0}\n", sNumber);
return 0;
}
}
Ceci produirait l'erreur suivante : Cannot implicitly convert type 'int' to 'short'. Le casting (distribution) de valeur consiste à convertir une valeur d'un type en une valeur d'un autre type. Par exemple, vous pouvez avoir une valeur nombre entier et vous pouvez avoir besoin de cette valeur dans une expression où un petit entier short est espéré. Le casting de valeur est également désigné sous le nom de conversion explicite. Pour distribuer (to cast) une valeur ou une variable, précédez la avec le type de données désiré entre les parenthèses. Voici un exemple : using System;
class Program
{
static int Main()
{
int iNumber = 168;
short sNumber = (short)iNumber;
Console.WriteLine("Number = {0}", iNumber);
Console.WriteLine("Number = {0}\n", sNumber);
return 0;
}
}
Ceci produirait : Number = 168 Number = 168 Press any key to continue . . . En exécutant la conversion explicite, vous devriez prêter une attention particulière à la valeur qui est distribuée. Si vous voulez qu'une valeur nombre entier soit assignée à une variable short, la valeur doit s'adapter dans 16 bits, ce qui signifie qu'elle doit être comprise entre -32768 et 32767. N'importe quelle valeur au delà de cette gamme produirait un résultat imprévisible. Considérez le programme suivant : using System;
class Program
{
static int Main()
{
int iNumber = 680044;
short sNumber = (short)iNumber;
Console.WriteLine("Number = {0}", iNumber);
Console.WriteLine("Number = {0}\n", sNumber);
return 0;
}
}
Ceci produirait : Number = 680044 Number = 24684 Press any key to continue . . . Notez que le résultat n'est pas raisonnable.
Chaque type de données de C#, adapté à la structure de .NET Framework, a été équipé de la méthode ToString () qui pourrait être utilisée pour convertir sa valeur en type chaîne de caractères. Nous n'avons pas adressé la possibilité de convertir une valeur d'un type primitif à un autre. Pour soutenir la conversion d'une valeur d'un type à l'autre, .NET Framework fournit une classe appelée convert. Cette classe est équipée de diverses méthodes statiques ; elles sont si nombreuses que nous ne puissions pas tous les passer en revue . Rappelez vous que chaque type de données primitif du langage C# est un type défini dans la structure .NET Framework comme suit :
Pour adapter classe convert à chaque type de données de C#, la classe est équipée d'une méthode statique dont le nom commence avec To, finit avec le nom de sa structure .NET Framework, et prend comme argument le type qui a besoin d'être converti. Basé sur ceci, pour convertir un nombre décimal de type double en un certain nombre de type int, vous pouvez faire appel à la méthode ToInt32() et donner la variable double comme argument. Sa syntaxe est : public static int ToInt32(double value); Voici un exemple : using System;
class Program
{
static int Main()
{
double dNumber = 34987.68D;
int iNumber = Convert.ToInt32(dNumber);
Console.WriteLine("Number: {0}", dNumber);
Console.WriteLine("Number: {0}", iNumber);
return 0;
}
}
|
|
|
||
| Précédent | Copyright © 2007, Yevol | Suivant |
|
|
||