La question est intéressante et malgré mes nombreuses années d'expérience en programmation, j'était un peu embêté. J'ai donc fait une petite recherche et voici le résultat.
Voici les 3 façon de convertir un objet en Int :
int temp = int.Parse(dataReader["FirstColumn"];
int temp = Convert.ToInt32(dataReader["FirstColumn"]);
int temp = (int)dataReader["FirstColumn"];
Alors, pouvez vous deviner quelle méthode est la plus rapide? Si vous avez choisi la troisième méthode, vous avez raison. Comme le DataReader est un object, vous pouvez faire un "Direct Cast" directement sur l'objet. Des tests de performances ont été fait sur le "Direct Cast" est il serait 3 fois plus rapide que les 2 autres méthodes.
En ce qui concerne le Int.Parse et le Convert.ToInt32, les 2 méthodes vont retourner le même résultat, sauf si la valeur de l'objet ou de la chaine de caractère est null.
Convert.ToInt32(null) va retourner 0, tandis que Int.Parse(null) va retourner une exception de type ArgumentNullException.
Int.Parse converti une chaine de caractère de format nombre en son équivalent 32 bits signé.
Par contre, Convert.ToInt32 est plus puissant car il permet une foule de surcharge (Overload) et il permet aussi d'Appliquer un formattage (globalisation).
quelques exemples:
string mystring = "1234";
int parseResult32 = System.Int32.Parse(mystring); //32 bit signé
short parseResult16 = System.Int16.Parse(mystring); //16 bit signé
La chaine de caractère doit contenir la représentation d'un nombre. Par exemple, elle ne peut pas contenir "12A34" car une exception serait lancée.
Si vous voulez convertir le caractère 'A' ou 0x65 en hexa en integer, vous pouvez utiliser le "Direct Cast" (int).
char c = 'A';
int castedfromchar = (int)c; //retourne 65
en utilisant le "Direct Cast", la variable c doir être un caractère et non pas une chaine de caractère.
byte b = 0x65;
int castedfrombyte = (int)b; //retourne 101
en utilisant le "Direct Cast", la variable c doir être de type byte.
Et voila!!!
Si j'ai oublié des détails, faites moi signe.
1 commentaire:
Merci pour l'info car j'utilise toujours la deuxième méthode.
Je vais pouvoir utiliser la 3ième méthode maintenant.
Thanks doug,
Dom
Publier un commentaire