Comment dois-je lancer dans VB.NET?

Tous sont-ils égaux? Dans quelles circonstances dois-je choisir chacune des autres?


EDIT: Suggestion de NotMyself

  • TryCast (var, Ssortingng)

Celles-ci sont toutes légèrement différentes et ont généralement un usage acceptable.

  • var. ToSsortingng () va vous donner la représentation sous forme de chaîne d’un object, quel que soit son type. Utilisez ceci si var n’est pas déjà une chaîne.
  • CStr (var) est l’opérateur de dissortingbution de chaînes VB. Je ne suis pas un gars de VB, alors je suggère de l’éviter, mais ça ne va vraiment rien faire. Je pense que c’est fondamentalement la même chose que CType .
  • CType (var, Ssortingng) convertira le type donné en chaîne, en utilisant tous les opérateurs de conversion fournis.
  • DirectCast (var, Ssortingng) est utilisé pour convertir un object en chaîne. Si vous savez qu’une variable d’object est en fait une chaîne, utilisez-la. C’est la même chose que (ssortingng)var en C #.
  • TryCast (comme mentionné par @ NotMyself ) est comme DirectCast , mais il renverra Nothing si la variable ne peut pas être convertie en chaîne, plutôt que de lancer une exception. C’est la même chose que var as ssortingng en C #. La page TryCast sur MSDN a également une bonne comparaison.

Cstr() est compilé en ligne pour de meilleures performances.

CType permet d’effectuer des conversions entre les types si un opérateur de conversion est défini

ToSsortingng() Entre le type de base et la chaîne renvoie une exception si la conversion est impossible.

TryParse() De Ssortingng à base typeif possible sinon renvoie false

DirectCast utilisé si les types sont liés via l’inheritance ou partagent une interface commune, lancera une exception si la trycast n’est pas possible, trycast ne renverra rien dans cette instance

Je préfère la syntaxe suivante:

 Dim number As Integer = 1 Dim str As Ssortingng = Ssortingng.TryCast(number) If str IsNot Nothing Then 

Hah tu peux 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 soucier de la surcharge des exceptions de casting. Votre dissortingbution réussit ou votre variable est initialisée à null et vous gérez cela en conséquence.

MSDN semble indiquer que les conversions Cxxx pour des types spécifiques peuvent améliorer les performances dans VB .NET car elles sont converties en code en ligne. Pour une raison quelconque, il suggère aussi DirectCast par opposition à CType dans certains cas (les documentations indiquent que lorsqu’il y a une relation d’inheritance; je pense que cela permet de vérifier la validité de la dissortingbution et d’appliquer des optimisations alors que CType utilise toujours VB runtime.)

Lorsque j’écris du code VB .NET, mon utilisation dépend de ce que je fais. Si je vais jeter le code prototype, j’utilise tout ce que je sais par taper. Si c’est le code dont je suis sérieux, j’essaie d’utiliser un casting Cxxx. S’il n’en existe pas, j’utilise DirectCast si je suis raisonnablement convaincu qu’il existe une relation d’inheritance. Si c’est une situation où je ne sais pas si la dissortingbution doit réussir (user input -> integers, par exemple), j’utilise TryCast pour faire quelque chose de plus convivial que de lancer une exception à l’utilisateur.

Une chose que je ne peux pas secouer, c’est que j’ai tendance à utiliser ToSsortingng au lieu de CStr mais que Cstr est censé être plus rapide.

L’utilisateur Konrad Rudolph préconise DirectCast () dans Stack Overflow question “Fonctionnalités cachées de VB.NET” .

Selon l’examen de certificateion, vous devez utiliser Convert.ToXXX () dans la mesure du possible pour des conversions simples, car il optimise les performances par rapport aux conversions CXXX.

À un moment donné, je me souviens avoir vu l’état de la bibliothèque MSDN pour utiliser CStr () car il était plus rapide. Je ne sais pas si c’est vrai si.