cs_olivier_1968
Messages postés5Date d'inscriptionmercredi 1 juin 2005StatutMembreDernière intervention20 janvier 2009
-
24 janv. 2008 à 18:17
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
30 janv. 2008 à 13:33
Bonsoir à tous,
J'ai un petit probleme dans mon code VB .net
Voici le code :
Public Class PurchaseOrder
Public shipTo As USAddress
Public billTo As USAddress
Public comment As String
End Class
Public Class USAddress
Public name As String
Public street As String
Public city As String
Public state As String
Public zip As Decimal
End Class
Module Serial
Dim po As New PurchaseOrder
Public Sub main()
po.shipTo.city = "test"
End Sub
End Module
Le problem est que lorsque je veut renseigner po.shipTo.city = "test" le
system me dit que l'objet n'existe pas !!
Pourtant lorsque je tape ma ligne po.shitpto. le vb m'ammene bien les
valeurs dispo en automatique c'est a dir name ou city ou state.
je pourrais déclarer directement tt as new usaddress mais là je ne vois pas
l'interet de faire des classes imbriquées si il faut décalrer tout les
niveau.
Pour info mon code est largement plus compliqué que l'exemple ci dessus que
j'ai volontairement simplifié pour mieux cilber mon probleme.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 25 janv. 2008 à 09:37
Bonjour
Ou sinon utiliser une structure.
Public Structure PurchaseOrder
Public shipTo As USAddress
Public billTo As USAddress
Public comment As String
End Structure
Public Structure USAddress
Public name As String
Public street As String
Public city As String
Public state As String
Public zip As Decimal
End Structure
Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 28 janv. 2008 à 09:04
Bonjour
Kevin, je vien de vérifier (j'avais déjà de gros doute), ce que tu vien de dire est complement faux, il est facile de modifier la valeur des membres d'une structure (il suffit qu'il soit accessible).
En .NET, les seules différences entre une classe et une structure, c'est que la structure ne peut pas avoir de constructeur par défaut et qu'elle est immédiatement crée lors de la déclaration (pas besoin de New) et que les attributs ne peuvent être initialisés dans leurs déclarations.
Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 29 janv. 2008 à 19:48
Effectivement NHenry
Mais:
Dim r As Rectangle
r.Location.X = 23
C'est aussi une structure dans une autre structure, mais ca ne fonctionne pas.. et je ne sais pas trop pourquoi . Location de Rectangle est Read/Write, et X de Point est aussi Read/Write, pourtant ceci génère l'erreur "Cette expression est une valeur et ne peut donc pas être la cible d'une assignation."
De là vient mon erreur. Si qqun pouvait expliquer pourquoi ceci ne fonctionne pas...
Une différence importante avec les structures est aussi que ce sont des variable par valeur, et non par référence comme une classe.. (si on les copie, on copie la valeur, pas la référence)