cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010
-
5 août 2009 à 21:12
cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010
-
6 août 2009 à 00:01
Bonjour,
J'ai créé une classe C1 dans laquelle chaque instance aura comme attribut un nom et un tableau. Par la suite je veux pouvoir dans une méthode redimensionner-éditer ce tableau à souhait. Le code que j'ai écrit ne marche pas.
La classe ressemble à ça :
Option Explicit On
Public Class C1
Private Name As String 'nom de l'instance
Private dTabX() As Double 'tableau de l'instance
'Je passe le code qui permet de créer l'instance avec New...
'[...]
'Propriété qui est censée faire référence au tableau
Public Property TabX()
Get
Return Me.dTabX
End Get
Set(ByVal value)
Me.dTabX = value
End Set
End Property
End Class
Maintenant, si j'essaye de travailler sur mon tableau dans un méthode quelconque avec le code suivant :
Private Sub MaMethode()
Dim c1Inst1 As New C1("Nom1") 'la création de l'objet marche comme il faut
ReDim Preserve c1Inst1.TabX(2) 'message d'erreur
End Sub
... je reçois le message d'erreur :
"Impossible d'effectuer un cast d'un objet de type 'System.Object[]' en type System.Double[]'."
Quelqu'un saurait-il m'aider pour me dire ce qui ne va pas et comment écrire la propriété TabX correctement ?
cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010 5 août 2009 à 23:29
Merci Charles, ça marche impec' !
nhervagault, en général je n'utilise les ArrayList que lorsque je veux mettre des objets divers et variés dedans. Lorsque j'ai une liste de valeurs d'un type bien précis (Double, String,...) j'utilise des tableaux. Mais peut-être n'est-ce pas optimal. Tu pourrais m'expliquer l'avantage rapidement ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 5 août 2009 à 23:48
L'avantage c'est que les tableaux ont une taille fixe en .net
du moins en c# je ne crois pas que le redim existe, a moins que c'est un clone ou un arraycopy derriere
Quand on le transforme en c#.
Les arraylist sont non typées donc problemes de cast.
Mais les listes generiques apport la solution
(objet, taille variable pas besoin de redim, et pas de casting, securité dans un list (of double) on peut mettre que du double.
Les inconvenients les objets (arraylist et list (of
sont des types plus lourd que les array simple.
Donc apres ca depend de l'utilité que tu as.
Exemple :
electronique --> Array (performance et la taille des elements est connus) WORD, BYTE, DWORD ....
application gestion --> List(of (taille inconnue gestion des stocks)
webservice (WSDL--> objet) --> Array pour la communication)
Esperant n'avoir rien oublié.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010 6 août 2009 à 00:01
Merci pour ces précisions.
[quote="nhervagault"]
L'avantage c'est que les tableaux ont une taille fixe en .net
du moins en c# je ne crois pas que le redim existe, a moins que c'est un clone ou un arraycopy derriere
Quand on le transforme en c#.
/quote
Donc le problème se situerait plutôt dans la cas où on voudrait convertir le code (actuellement je suis avec VB et Redim marche bien !).
[quote="nhervagault"]
Les inconvenients les objets (arraylist et list (of
sont des types plus lourd que les array simple.
/quote
En fait je ne connaissais pas les List(Of T). Merci pour le conseil !