RunUO-FR

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

Partagez | 
 

 Le mot clef static

Aller en bas 
AuteurMessage
Gargouille



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

MessageSujet: Le mot clef static   Lun 8 Sep - 10:03

Chaque instance d'une classe possède ses propres valeurs aux éléments qu'elle déclare.

On accède aux éléments en s'adressant à l'instance concernée :
Code:

// en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur
Mobile mob = Target();

//mob est une variable de type Mobile, elle a la valeur renvoyée par la méthode Target()
//Hits est une variable de type int, déclarée dans la classe Mobile
int PointsDeVieDeCetteInstanceDuMobCiblé = mob.Hits;

Certaines valeurs ne nécessitent pas d'être propres à chaque instance de la classe, ou nécessitent d'être communes à la classe, indépendament de l'instance concernée. Elles seront alors déclarées avec le mot clef static.

Exemple:

  • Vous créez un nouveau monstre...
  • Vous voulez qu'il ait deux types d'ennemis, deux races de monstres quil fuiera à vue...
  • L'un des types d'ennemis correspondant à celui qui l'a frappé en dernier
  • Le second étant constant, les dragons par exemple


Alors il faudra déclarer les variables ainsi :
Code:

//dans cet exemple, les variables ne sont pas initialisées, elles pourraient l'^tre immédiatement ou par la suite

public Mobile DernierEnnemiMortel;

public static Mobile EnnemiMortelHereditaire;

Dés lors, dans un script extérieur à cette classe, par exemple, si on veut connaitre les valeurs de ces deux variables, il faudra:

  • s'adresser à une instance pour avoir sa valeur de DernierEnnemiMortel :
    Code:

    // en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur
    Mobile targ = Target();

    //pour connaitre le DernierEnnemiMortel du mobile ciblé (targ)
    Mobile mob = targ.DernierEnnemiMortel;

  • s'adresser au type pour avoir sa valeur de EnnemiMortelHereditaire :
    Code:

    // en admettant que la méthode Target existe et renvoie un mobile ciblé par le joueur
    Mobile targ = Target();

    //pour connaitre le EnnemiMortelHereditaire du mobile ciblé (targ)
    Type type = targ.GetType();//GetType étant une méthode renvoyant le type de l'instance désignée
    Mobile mob = type.EnnemiMortelHereditaire;


Demander un élément static en s'adressant à une instance renverra une erreur.
Ce qui est static doit être accédé via le type, pas via une instance du type.



Nous n'avons parlé que des variables, mais static peut être déclaré par une méthode, une classe...

Le principe étant le même, appeler une méthode déclarant static doit se faire via le type de l'instance et pas par une instance du type.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Le mot clef static
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Langage Objet - static
» La clef d'activation que vous avez fournie ne correspond pas
» desinfection et protection de clés usb et supports amovibles
» Présentation FAMAS
» Changement de motrice en tête de train

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