Déclaration d'un tableau dans une classe

Résolu
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 juin 2010 - 5 août 2009 à 21:12
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 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 ?

Merci d'avance !

5 réponses

Utilisateur anonyme
5 août 2009 à 22:45
Salut,

N'oublis pas types pour la propiétée :

Public Property TabX() As Double()
  Get
    Return Me.dTabX
  End Get
  Set(ByVal value() As Double)
    Me.dTabX = value
  End Set
End Property


_____________
Kenji
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 août 2009 à 22:47
Salut

Utilise une arraylist ou mieux une list(of Double)
0
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 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 ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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é.
0

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

Posez votre question
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 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 !
0
Rejoignez-nous