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

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

Votre réponse

8 réponses

Meilleure réponse
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 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é 88 internautes ce mois-ci

Commenter la réponse de cs_Willi
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
27 septembre 2008
- 27 sept. 2008 à 00:26
0
Merci
D'accord merci !
Commenter la réponse de MartialArtist
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 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
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
27 septembre 2008
- 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
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 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
Messages postés
7
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
27 septembre 2008
- 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
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 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
Messages postés
843
Date d'inscription
mercredi 22 octobre 2003
Dernière intervention
7 janvier 2009
- 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.