RunUO-FR
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -50%
-50% Baskets Nike Dunk Low
Voir le deal
64.99 €

 

 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
 
Les types, faire des casts
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Les types, leur déclaration
» 00) Installer son propre serveur RunUO et l'environnement C#
» Faire que les objets ne virent pas au jaune sous le curseur.

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