VB.Net : DirectCast ou CType ?

Résolu
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008 - 26 sept. 2008 à 18:25
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 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.
A voir également:

8 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
27 sept. 2008 à 00: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 !
++
3
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 00:26
D'accord merci !
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 sept. 2008 à 00:30
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...
0
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 00:37
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 ?
0

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

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 sept. 2008 à 02:10
"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
0
MartialArtist Messages postés 7 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 10:51
"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 !
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
27 sept. 2008 à 12:12
>>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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 sept. 2008 à 17:52
"j'utilise Option Strict On"
OK

Merci Willi
0
Rejoignez-nous