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

MartialArtist 7 Messages postés vendredi 26 septembre 2008Date d'inscription 27 septembre 2008 Dernière intervention - 26 sept. 2008 à 18:25 - Dernière réponse : Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention
- 28 sept. 2008 à 17:52
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 27 sept. 2008 à 00:21
3
Merci
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 !
++

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Willi
MartialArtist 7 Messages postés vendredi 26 septembre 2008Date d'inscription 27 septembre 2008 Dernière intervention - 27 sept. 2008 à 00:26
0
Merci
D'accord merci !
Commenter la réponse de MartialArtist
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 27 sept. 2008 à 00:30
0
Merci
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...
Commenter la réponse de Kevin.Ory
MartialArtist 7 Messages postés vendredi 26 septembre 2008Date d'inscription 27 septembre 2008 Dernière intervention - 27 sept. 2008 à 00:37
0
Merci
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 ?
Commenter la réponse de MartialArtist
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 27 sept. 2008 à 02:10
0
Merci
"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
Commenter la réponse de Kevin.Ory
MartialArtist 7 Messages postés vendredi 26 septembre 2008Date d'inscription 27 septembre 2008 Dernière intervention - 27 sept. 2008 à 10:51
0
Merci
"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 !
Commenter la réponse de MartialArtist
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 27 sept. 2008 à 12:12
0
Merci
>>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
Commenter la réponse de cs_Willi
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 28 sept. 2008 à 17:52
0
Merci
"j'utilise Option Strict On"
OK

Merci Willi
Commenter la réponse de Kevin.Ory

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.