CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C# Methodes/Classes/Static

Nawako
Nawako
Niveau 8
21 septembre 2010 à 23:15:16

Salut,

Ca fait quelques semaines que j'ai commencé a apprendre le C#, pour des raisons scolaires surtout, mais vu que le language est simple et utile, je pense l'apprendre plus en profondeur a des fins personelles.

Bref je suis en train de suivre ce tuto (ayant déjà fini le livre de cours, qui couvre pas grand chose ^^)
http://www.freewebs.com/campelmxna/tutorials.htm

Et j'en suis donc au chapitre 8 "Tutorial 8: Introduction to methods and some of their uses; Introduction to static"

Malheureusement, j'y capte rien... je l'ai pourtant lu et relu et rerelu, et meme cherché d'autres tutos sur le net en anglais ou meme français concernant ce sujet et j'ai toujours pas compris.

Si quelqu'un aurait un tuto vraiment compréhensible ou bien si on pourrais m'expliquer rapidement le concept?

merci d'avance

dnob700
dnob700
Niveau 10
21 septembre 2010 à 23:48:37

une méthode static c'est une méthode qui peut être appelé sans avoir besoin de créer un instance de la classe à laquelle elle appartient. Évidemment, la restriction c'est que cette méthode ne peut pas appeler des méthodes de la classes qui ne sont pas statique ou de lire des variables membres de la classe. Car on ne sait pas dand quelle instance elles devraient être prises (à noter qu'une variable peut-être déclaré static aussi et dans ce cas là, elle est partagé entre toutes les instances de la classe et elle peut être lue par les fonction static de la classe).

L'intérêt est de fournir certaine fonctionnalité qui logiquement peuvent se ranger dans une classe donnée mais qui n'ont pas besoin d'être dupliqué selon les instances. Dans des langages plus malin on utiliserait des fonctions plutôt que des fonctions membres pour ces fonctionnalité (mais en C#, comme en Java par exemple) il n'y a pas de fonction (même si une fonction static dans une classe est la même chose à peu près qu'une fonction en C ou en C++).

Cette fonctionnalité est par exemple utilisée pour la fonction main (là aussi en C# comme en Java, ce qui est assez idiot, le runtime pourrait initialiser une instance de la classe qui contient cette fonction, ça serait nettement plus logique) qui est lancée au démarrage du programme sans qu'aucune classe n'ait été initialisée.

Nawako
Nawako
Niveau 8
22 septembre 2010 à 00:02:01

Donc si j'ai bien compris ca consiste a faire un "using ****" en quelques sortes?

dnob700
dnob700
Niveau 10
22 septembre 2010 à 00:42:48

non. Ou alors, je ne vois pas ce que tu veux dire.

IIIIIIIIIIIIIll
IIIIIIIIIIIIIll
Niveau 10
22 septembre 2010 à 21:43:46

Mouairf, je sais pas comment c'est implémenté en C# (si les classes sont elles-mêmes des objets, et toussa :-) ), mais le principe de la méthode statique, c'est d'envoyer le message à la classe plutôt qu'à une instance spécifique.
Du coup, elle n'aura pas accès aux données des instances de la classe. Par contre, elle pourra être utilisée sans qu'on doive créer une instance de la classe en question.

Nawako
Nawako
Niveau 8
23 septembre 2010 à 12:45:39

Je pense avoir compris...
Donc si je me trompe pas ca sert a faire ecrire un bout de code, qu'on peut reutiliser en une ou deux lignes?

dnob700
dnob700
Niveau 10
23 septembre 2010 à 19:00:00

non. Ou alors, je ne vois pas ce que tu veux dire.

FrenchWolf
FrenchWolf
Niveau 3
30 septembre 2010 à 14:06:52

Ah ce fameux Static, compliqué lorsqu'ont débute. Et ça reste compliquer avec les explications qui sont trop pointu, ont pense comprendre mais ont s'y perd encore plus.

Ok, je ne suis pas expert, mais je peux t'envoyer une piste. Si tu comprend bien l'utilisation des classes j'y vais comme suit pour un exemple.

Tu as une classes Ennemie, qui contient trois variables dont une statique.

Variable position, variable Image, Variable (static) disons Hauteur d'écran.

À chaque ennemie que tu créer avec ta classe Ennemie, tu aura la variable Position et Image qui ce crée automatiquement pour chaque ennemies, sauf que la variable Static, elle, ne ce crée qu'une seule fois peux importe le nombres d'ennemies que tu crée.

Bon, je pense que ce n'est pas hyper clair, mais disons qu'une variable static peux devenir utile si tu désire compté le nombre d'instance (création d'ennemie utilisant ta classe Ennemi).

saleGauss
saleGauss
Niveau 9
30 septembre 2010 à 18:53:17

Un attribut ordinaire est lié (ie, se trouve dans) à un objet (une instance d'une classe).
Tu auras un "exemplaire" de cet attribut par objet créé.

Un attribut statique est lié à la classe elle même c'est à dire qu'il n'est dans le "contexte" d'aucun objet(/instance) en particulier.
Tu auras un "exemplaire" de cet attribut pour tous les objets créés.

tbop2
tbop2
Niveau 10
03 octobre 2010 à 05:11:02

Le meilleur moyen exemple pour expliquer ça reste le singleton mais il est difficilement accessible à ton niveau.

Non je pense toujours à une classe qui doit posséder un identifiant propre et unique pour chacune de ses instances.

Tu crées un attribut privé static qui sera un générateur d'id et qui appartient à toutes les classes.

class Etudiant
{
private:
//Initialisation OBLIGATOIRE
static unsigned int id_generator = 0;
unsigned int mId;
String mName;
String mLastname;
Date mBirthdate;

public:
Etudiant(String name, String lastname, Date birthdate){
//A chaque fois que l'on veut créer un étudiant on souhaite qu'il ait un numero propre à lui unique. On va tout simplement incrémenter une valeur initiale au fur à mesure de la création d'un étudiant. Pour cela il faut garder quelque part une information (le compteur) qui nous assure l'unicité et qui soit indépendante de l'instance créée.

//On augmente la valeur de référence
id_generator++;
//On attribue la valeur de référence au nouvel objet
mId = id_generator;

//Initialisation des autres variables
//...
}
}

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment