[VB.NET] Acceder au variables d'une classe...?

Acceder au variables d'une classe...? [VB.NET] - C#/.NET managed - Programmation

Marsh Posté le 21-06-2006 à 17:40:04    

Bonjour,
 
Ma question est assez simple :
 
Si par exemple j'ai une classe "Test", qui contient 2 variables :  
 
- i as integer
- str as string
 
Que dans mon code j'ai une fonction que j'appelle plusieurs fois qui fait :
 
Private Sub NewTest_Init()
 
Dim montest as New Test
 
End Sub
 
Comment faire par la suite pour pouvoir acceder aux variables i et str d'une classe cree en particulier vu quelle auront toutes le meme nom : montest ??
 
Est il possible d'incrementer le nom a chaque declaration pour avoir un nom unique??
 
Merci

Reply

Marsh Posté le 21-06-2006 à 17:40:04   

Reply

Marsh Posté le 21-06-2006 à 17:51:33    

Citation :

Comment faire par la suite pour pouvoir acceder aux variables i et str d'une classe cree en particulier vu quelle auront toutes le meme nom : montest ??


comment ça "elles auront toutes le meme nom" ? tu connais le principe d'instanciation d'une classe ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2006 à 17:57:42    

Non effectivement j'ai du louper quelquechose...
Je suis sur qu'il y a une solution, mais je ne la connais pas...est il possible d'avoir une piste de recherche ?
 
Sinon je veux dire que comme je les ai toutes declaree par dim montest as new test, je ne sais pas apres comment acceder au variable de l'un ou l'autre de mes objets crees
 
Merci

Reply

Marsh Posté le 21-06-2006 à 19:14:36    

déjà si tu veux y accéder elles doivent être "public"...
 
je ne connais pas bien vb.NET
mais en C#
 
public class TEST
{
    public int a;
    public int b;
}
 
TEST t = new TEST();
t.a = 1;
t.b = 2;
 
mais normalement les variables doivent être privée, et pour y accéder il faut des ascesseurs
 
public class TEST
{
    private int a;
    private int b;
 
    public int A
    {  
        get { return a; }
        set { a =value; }
    }
    public int B
    {
        get { return b; }
        set { b = value; }
    }
}
 
alors ici pour y accéder c'est
 
TEST t = new TEST();
t.A = 1;
t.B = 2;
 
int temp = t.A;  
 
mais bon si tu comprends pas ça, vaudrait mieux que tu retournes aux bases
 
si tu en veux plusieurs
 
TEST t1 = new TEST();
TEST t2 = new TEST();
TEST t3 = new TEST();
 
et bien entendu, chaque instance (t1, t2, t3, ...) représente une instance de la classe TEST. Ils sont donc tous indépendant...  
Voix ça comme trois ceaux différents avec chacun leur substance...


Message édité par moi23372 le 21-06-2006 à 19:17:22
Reply

Marsh Posté le 21-06-2006 à 19:25:32    

Oui mais tout ca je sais...mon probleme est que chaque instance est cree pendant le runtime donc que je ne connais pas leur nom a l'avance...je ne peux pas creer de t1,t2,t3 car je ne sais pas combien il y en aura...

Reply

Marsh Posté le 21-06-2006 à 19:45:35    

kissskoool a écrit :

Oui mais tout ca je sais...mon probleme est que chaque instance est cree pendant le runtime donc que je ne connais pas leur nom a l'avance...je ne peux pas creer de t1,t2,t3 car je ne sais pas combien il y en aura...


chaque instance est créée pendant le runtime ? c'est nouveau ça ? et depuis quand ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-06-2006 à 20:29:56    

s'il expliquait déjà à quoi il voulait arriver.
 
Sinon rien ne t'empêche de passer par un ArrayList de référence d'objet. C'est pour ça que c'est fait...
 
Sinon il te reste aussi l'introspection, mais la on commence à aller loin, surtout que tu n'as même pas l'air de maitriser la POO convenablement...


Message édité par moi23372 le 21-06-2006 à 20:30:51
Reply

Marsh Posté le 21-06-2006 à 20:35:23    

kissskoool a écrit :

Oui mais tout ca je sais...mon probleme est que chaque instance est cree pendant le runtime donc que je ne connais pas leur nom a l'avance...je ne peux pas creer de t1,t2,t3 car je ne sais pas combien il y en aura...


 
... les instances de classes sont toujours créé pdt le "runtime" (ca ne veut rien dire au passage) si tu connais pas les noms des instances de ta classes alors c'est que tu sais pas mais alors pas DU TOUT ce que tu fais ... faut apprendre a coder avant de pouvoir essayer l'objet.

Reply

Marsh Posté le 03-07-2006 à 11:10:22    

Oula faut se calme les gens.
 
Kisskool : si j'ai bien compris, tu veux instancier un nombre n d'instances de ta classe 'Test' pendant l'exécution (le runtime) de ton programme.
Et tu ne sais pas comment les identifier ?
La solution :
* Tu instancies un tableau de 'Test'
* Puis tu fais une boucle sur toute la longueur de ton tableau pour instancier chaque 'Test' de ton tableau.
* Ainsi tu pourras y accéder simplement et proprement en utilisant les indices du tableau.
 
Je connais pas VB.Net, mais en C# ça donne ça :

Code :
  1. // le nombre d'instances à créer
  2. int count = 20;
  3. // le tableau
  4. Test []mestests = new Test[count];
  5. // la boucle
  6. for(int i = 0;i < count; i++)
  7.   mestests[i] = new Test();
  8. // pour accéder à tes données
  9. mestests[0].str = "première chaine";

Reply

Marsh Posté le 03-07-2006 à 12:23:50    

et si tu veux que ce soit dynamique, tu passes par un ArrayList qui est un tableau dynamique... ça à plus ou moins le même fonctionnement que les tableaux statiques mais avec des plus.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed