Bonjour à tous et merci du temps que je vous prends,
j'apprends le VB.NET et je butedepuis plusieurs jours sur le problème suivant :
j'ai une variable nommée departure, elle même ayant la structure de la classe CoordGPS définie ainsi :
classe.vb
Quand je clique sur le bouton OK de ma form, le code est censé envoyer la variable departure à la fonction essai_func. Celle-ci utilise une variable intermédiaire nommée abc et est convertie par la fonction DR( ), qui elle-même utilise une variable interne nommée deg (de structure CoordGPS).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Class CoordGPS Public Lat As Double Public Lon As Double End Class
Mais a priori, je pensais (et j'aimerais obtenir) que departure ne soit pas elle-même modifiée ! ! ! pourtant c'est ce qui se passe dans le code suivant :
Form1.vb
je ne comprends pas pourquoi le msgbox n°2 renvoie la valeur de dep.Lat et dep.Lon 20 : 1 alors que dep n'a a priori pas été modifiée !, idem dans l'évênement OK_click où departure ne devrait pas être modifiée et devrait renvoyer les valeurs d'origine à savoir 10 : 1
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 Dim Departure As New CoordGPS '_____________________________________________ Public Function DR(ByVal deg As Object) As Object If deg.GetType.Name = "CoordGPS" Then deg.Lat = deg.Lat * 2 deg.Lon = deg.Lon * 2 ElseIf deg.GetType.Name = "Double" Then deg = deg * 2 End If Return deg End Function '____________________________________________ Public Function essai_func( _ ByVal dep As CoordGPS _ ) As Double Dim res As Double Dim abc As New CoordGPS MsgBox("1: " & dep.Lat & " / " & dep.Lon) abc = DR(dep) MsgBox("2: " & dep.Lat & " / " & dep.Lon) res = abc.Lat Return res End Function '____________________________________________ Private Sub ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ok.Click Departure.Lat = 10 Departure.Lon = 1 Label1.Text = essai_func(Departure).ToString Label2.Text = Departure.Lat & " : " & Departure.Lon End Sub End Class
Si quelqu'un a la clé de mon problème, merci de m'aider, je n'y comprends plus rien !!!
ps : j'ai affiché ici une version très simplifiée de mon code, pour comprendre ce qui ne va pas, ce que j'ai mal assimilé. Je ne cherche pas une réécriture plus compacte car j'ai besoin de ces différentes fonctions dans mon vrai projet, mais je ne souhaite pas embeter tout le monde avec autant de lignes de code pour pas grand chose. La source est dans le zip joint ci-dessous.
Partager