Passage par référence et classe

cs_keskispas Messages postés 46 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 26 août 2008 - 11 janv. 2006 à 17:50
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 12 janv. 2006 à 17:57
KesKisPas

Bonjour tout le monde.

Quelque'un saurait comment passer une variable par référence à une classe ?
Exemple :

J'ai une classe :
**************************************
Public Class MaClass
Private MonChamp as String

Public Sub New (ByRef ObjChamp as String)
MonChamp = "Passé par la classe"
End Sub
End Class
**************************************

Et dans le programme
***************************************
...
Dim ma_chaine as String = ""
Dim obj as new MaClasse(ma_chaine)
Console.WriteLine(ma_chaine)
...
***************************************

Et je voudrais donc voir affiché "Passé par la classe" dans la console...

Quelqu'un sait ?

Merci !

6 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
11 janv. 2006 à 17:59
Salut!

Dans ton constructeur de classe (Sub New(...)), tu as oublié de modifier la valeur de ObjChamp ...

Public Sub New (ByRef ObjChamp as String)
MonChamp = "Passé par la classe"
ObjChamp = MonChamp
End Sub

CR
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 janv. 2006 à 18:11
Salut
C'est du .Net ça ?
Je n'y connais pas grand chose, mais ce genre de manip est plutôt à faire avec Get et Let, non ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_keskispas Messages postés 46 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 26 août 2008
11 janv. 2006 à 18:25
KesKisPas

Oui, il y avait une erreur (merci crenaud76) dans mon code mais ça n'a aps résolu mon souci.
Je corrige :

La classe :
**************************************
Public Class MaClass
Private MonChamp as String

Public Sub New (ByRef MonChamp as String)
MonChamp = "Passé par la classe"
End Sub
End Class
**************************************

Le programme :
***************************************
...
Dim ma_chaine as String = ""
Dim obj as new MaClasse(ma_chaine)
Console.WriteLine(ma_chaine)
...
***************************************

Jack, dans mon cas l'opération s'effectue dans le constructeur, donc pas encore de Get ni de Let (et OUI c'est de .Net !).
Et je ne pense pas que ça résolve le problème des références de toute façon, mais merci quand même !

Je cherche toujours...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
12 janv. 2006 à 08:52
Bonjour


Attribut privé et paramètre du constructeur portent le mme nom, met 2 nom différent déjà.

Sinon, essaye de trouver une autre solution à ton pb, car je doute d'u'ilo y ait une solution.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_keskispas Messages postés 46 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 26 août 2008
12 janv. 2006 à 09:57
KesKisPas

Ok, je mets << Me.MonChamp = "Passé par la classe" >>

Mais ça voudrait dire que le passage par référence ne s'effectue qu'avec des fonctions et procédures et pas avec des méthodes de classes...

Ca m'etonne quand même.

A la rigueur, dans un constructeur, je comprendrai qu'il y ait des restrictions, mais c'est tout.

Je persiste, tant pis !

Merci
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
12 janv. 2006 à 17:57
Le Ma_Chaine de ton programme principale ne peut valoir "Passé par la classe" que si dans le constructeur de ta classe, le parametre MonChamp (que tu indique en ByRef) est modifié !!!
Essaye le code du constructeur que je t'ai donné, tu verras que Ma_Chaine vaudra ce que tu y a mis dans le constructeur

CR
0
Rejoignez-nous