RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  Connexion  

Partagez
 

 Les types, faire des casts

Aller en bas 
AuteurMessage
Gargouille



Messages : 97
Date d'inscription : 02/09/2008

Les types, faire des casts Empty
MessageSujet: Les types, faire des casts   Les types, faire des casts Icon_minipostedSam 6 Sep - 16:32

Faire un cast, c'est définir une variable typée dans un autre type, lorsque c'est possible.

Certains casts sont implicites, le système les gère seul.

D'autres sont explicites, nous devons les déclarer.

Par exemple :

Code:
double decimal = 1.2;
int entier;

entier = decimal ; // ceci ne fonctionnera pas, car les types sont différents, le système ne sait pas faire entrer 1.2 dans un entier.

Nous le savons, il faut arrondir. Pour celà, nous devons spécifier un cast, pour dire que nous voulons explicitement changer un double en int.

Cela se fait ainsi :
Code:
entier = (int)decimal; // cette ligne fonctionnera, entier prendra la valeur de 1



Chaque classe déclare des propriétés, qu'elle les lègue en héritage aux classes dérivées.
Donc par exemple :
Mobile déclare la propriété Name de type string.
On peut donc faire:
Code:
Mobile mob = GetMobile();//méthode qui renverrait une instance de Mobile
string nom = mob.Name;

Maintenant, PlayerMobile déclare la variable Race.
On n epeut pas faire:
Code:
Mobile mob = GetMobile();//méthode qui renverrait une instance de Mobile
RaceType race = mob.Race;

Car Race n'est pas défini dans Mobile. Il nous faut donc faire un cast, pour transformer mob du type Mobile vers le type PlayerMobile:
Code:
Mobile mob = GetMobile();//méthode qui renverrait une instance de Mobile
RaceType race = ( (PlayerMobile)mob ).Race;

Mais attention aux casts : la ligne précédente compilera mais à l'execution, celà pourrait crasher car si un PlayerMobile est forcement un Mobile, l'inverse n'est pas vrai.
Si GetMobile a renvoyé un joueur sous forme de Mobile, le cast en PlayerMobile réussira.
Si GetMobile a renvoyé un Ettin sous forme de Mobile, le cast en PlayerMobile échouera.
La valeur de (PlayerMobile)mob sera alors nulle.
Et demander la valeur d'une variable d'un objet nul, ça crash.

Il faut donc faire :
Code:
Mobile mob = GetMobile();//méthode qui renverrait une instance de Mobile
PlayerMobile player = (PlayerMobile)mob;//le cast
if(player != null)//si le cast renvoie différent de nul
{
  RaceType race = player.Race;
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Les types, faire des casts
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» faire une copie du fichier de la license de SZ ?
» Comment faire pour graver sur un cd a partir d'un film camescope?
» comment faire pour trouver un point d'arriver sur autoroute (nuivi2340lmt)
» Le topic des idées cons pour faire fortune... mais ça ne marchera pas
» Faire le trottoir !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Tutoriaux Scripts :: Tutoriaux C#-
Sauter vers: