VB.Net : DirectCast ou CType ? [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008
-
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Bonjour !

Je code en VB.Net 2005.
J'aurais une question : quel est le plus rapide/adapté entre DirecCast et CType pour récupérer la form fille d'une form MDI ?

J'utilise ceci :






Dim





frm


As



frmChild


frm =





DirectCast

(


Me

.ActiveMdiChild, frmChild)


frmChild étant la form fille et le code étant appelé dans la form MDI.

Est-ce optimal en terme de vitesse d'exécution ? Ou bien l'utilisation de CType est-elle meilleure ? Pourquoi ?

Merci,
Bien cordialement.
A voir également:

8 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
21
Bonsoir, ce lien sera mieux qu'un petit (moyen) discours parsemés de fautes
http://msdn.microsoft.com/fr-fr/library/7k6y2h6x(VS.80).aspx

En clair utiliser DirectCast te donnera sensiblement de meilleur performance si tu sais que le type de ton objet à convertir et le type de convertion sont les "mêmes" (question d'héritage...).

Finalement je te conseille quand même de lire le lien donné tu comprendras mieux !
++
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008

D'accord merci !
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
Salut,
Désolé de m'incruster, mais j'ai une question en rapport avec ta question MartialArtist, alors j'en profite

Moi je suis du genre à faire comme ceci:
Dim frm As frmChild = Me.ActiveMdiChild
Ca donne quoi ceci? VB fait-il un DirectCast ou un CType?

Rappelons que Dim Val As Double = Integer.Maximum fonctionne aussi, et là il est clair qu'un DirectCast ne fonctionne pas...
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008

Ah, çà c'est une bonne question, je ne savais pas que c'était possible de procéder comme cela ?

Si quelqu'un connait la réponse, qu'il n'hésite pas, çà m'intéresse également !

Peut être que VB est intelligent et détecte un héritage entre les classes frmChild et Form, et donc fait un DirectCast ?
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
"Ah, çà c'est une bonne question, je ne savais pas que c'était possible de procéder comme cela ?"
Tu fais jamais des truc du genre :PictureBox1.Image Bitmap.FromFile("C:\Image.jpg") ' Cast Image> BitmapDim MyBitmap As Bitmap PictureBox1.Image ? ' Cast Bitmap> Image
Il s'agit bien d'un DirectCast dans ce cas, mais VB sait aussi faire une réelle conversion:
Dim MyValue As Integer = 12TextBox1.Text MyValue ' Conversion Integer> String
J'ai toujours pas mal profité des capacités du compilateur à faire les conversions tout seul, mais j'aime bien savoir ce que VB fait "en dessous".
"Peut être que VB est intelligent et détecte un héritage entre les classes frmChild et Form, et donc fait un DirectCast ?"
Oui je le pense, mais ce n'est que mon avis, j'aimerais bien une confirmation
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
27 septembre 2008

"Tu fais jamais des truc du genre " ==> En fait non, parce que j'utilise Option Strict On

Du coup je fais tous les casts à la main, mais VB à l 'air d'être très fort pour caster automatiquement !
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
21
>>Moi je suis du genre à faire comme ceci:
>>Dim frm As frmChild = Me.ActiveMdiChild
>>Ca donne quoi ceci? VB fait-il un DirectCast ou un CType?

>>Rappelons que Dim Val As Double = Integer.Maximum fonctionne aussi, et là il est clair qu'un DirectCast ne fonctionne pas...

Pour les conversions implicites VB utilisera lors de la génération CType.

Encore une fois il existe de nombreux article sur la toile sur les principes de bases de vb.net sur les conversions de types: Lien
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
"j'utilise Option Strict On"
OK

Merci Willi