Bonjour,
Je mets plusieurs classe "Personne" dans ma combo.
Dans une fonction je passe l'item sélectionné en Byval et dans la fonction je modifie les valeurs.
La logique veut qu'en passant un paramètre en ByVal à la sortie de la fonction celui n'est pas modifié.
Sauf que là ce n'est pas le cas.
Si on rappel l'item sélectionné celui a changé de valeur.
Le code ci-dessous n'a aucun intérêt sauf à servir de démo
Alors normal ou est-ce un bug ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim p As Personne p = New Personne p.nom = "AAAAA" p.prenom = "BBBBB" MyCombo.Items.Add(p) p = Nothing p = New Personne p.nom = "CCCCC" p.prenom = "DDDDDD" MyCombo.Items.Add(p) p = Nothing End Sub Private Function DEMO_DU_ByVal(ByVal pers As Personne) As String pers.nom = "Erreur1" pers.prenom = "Erreur2" Return "ok" End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show(DEMO_DU_ByVal(CType(MyCombo.SelectedItem, Personne))) MessageBox.Show(CType(MyCombo.SelectedItem, Personne).ToString) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click MessageBox.Show(CType(MyCombo.SelectedItem, Personne).ToString) End Sub End Class Public Class Personne Public nom As String = "" Public prenom As String = "" Public Overrides Function ToString() As String Return nom & " " & prenom End Function End Class
Partager