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

MessageSujet: Les types, faire des casts   Sam 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 ?
» que dois-je faire apres avoir fait un scan avec hijckthis
» Faire des renforts de murs
» Comment faire pour graver sur un cd a partir d'un film camescope?
» Vous avez déniché une offre promotionnelle et vous souhaitez en faire profiter tout le monde ?

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