Comment dois-je m'y prendre? VB.NET Je ne sais pas.
7 réponses
ceux-ci sont tous légèrement différents, et ont généralement un usage acceptable.
-
var.
ToString
()
va vous donner la représentation string d'un objet, quel que soit son type. Utilisez ceci sivar
n'est pas déjà une chaîne de caractères. -
CStr
(var)
est l'opérateur de coulée de corde VB. Je ne suis pas un gars VB, donc je suggère Je l'évite, mais ça ne va pas vraiment faire de mal. Je pense que c'est essentiellement la même queCType
. -
CType
(var, String)
convertira le type donné en une chaîne de caractères, en utilisant les opérateurs de conversion fournis. -
DirectCast
(var, String)
est utilisé pour transformer un objet en corde. Si vous savez qu'une variable objet est, en fait, une chaîne, utilisez ceci. C'est le même que(string)var
en C#. -
TryCast
(comme mentionné par @ NotMyself ) est commeDirectCast
, mais il retourneraNothing
si la variable ne peut pas être convertie en une chaîne, plutôt que de lancer une exception. C'est la même chose quevar as string
dans C#. La pageTryCast
sur MSDN présente également une bonne comparaison.
Cstr()
est compilé en ligne pour une meilleure performance.
CType
permet des moulages entre types si un opérateur de conversion est défini
ToString()
entre le type de base et la corde jette une exception si la conversion n'est pas possible.
TryParse()
De la Corde à la base typeif
possible, sinon retourne false
DirectCast
utilisé si les types sont liés par héritage ou partager une interface commune, lancera une exception si la fonte n'est pas possible, trycast
ne retournera rien dans ce cas
je préfère la syntaxe suivante:
Dim number As Integer = 1
Dim str As String = String.TryCast(number)
If str IsNot Nothing Then
Hah vous pouvez dire que j'écris généralement du code en C#. 8)
la raison pour laquelle je préfère TryCast est que vous n'avez pas à vous mêler des exceptions concernant les frais généraux de casting. Votre casting réussit ou votre variable est initialisée à null et vous en conséquence.
MSDN semble indiquer que les moulages Cxxx pour des types spécifiques peuvent améliorer les performances dans VB .NET parce qu'ils sont convertis en code inline. Pour une raison quelconque, il suggère aussi DirectCast par opposition à CType dans certains cas (les documentations indiquent que c'est quand il y a une relation de succession; je crois que cela signifie que la santé de la fonte est vérifiée au moment de la compilation et des optimisations peuvent être appliquées alors que CType utilise toujours les VB runtime.)
quand j'écris du code VB. net, ce que j'utilise dépend de ce que je fais. Si c'est du code prototype que je vais jeter, j'utilise ce que je tape. Si c'est du code dont je parle sérieusement, j'essaie d'utiliser un casting Cxxx. Si l'un n'existe pas, J'utilise DirectCast si j'ai une croyance raisonnable qu'il y a une relation d'héritage. Si c'est une situation où je n'ai aucune idée si le cast devrait réussir (entrée utilisateur -> entiers, par exemple), alors J'utilise TryCast de manière à faire quelque chose de plus convivial que de jeter une exception à l'utilisateur.
une chose que je ne peux pas secouer est que j'ai tendance à utiliser ToString au lieu de CStr, mais soi-disant Cstr est plus rapide.
Utilisateur Konrad Rudolph défenseurs pour DirectCast() dans le Débordement de la Pile question des Fonctionnalités Cachées de VB.NET" .
selon l'examen de certification, vous devez utiliser Convert.ToXXX () autant que possible pour les conversions simples car il optimise la performance mieux que les conversions CXXX.
à une certaine époque, je me souviens avoir vu la bibliothèque MSDN utiliser CST() parce qu'elle était plus rapide. Je ne sais pas si c'est vrai que l'.