La première chose à noter est que VB.Net ne pas directement de l'analogique vers le C#' (type)instance
casting mécanisme. - Je apporter que parce que c'est utile de l'utiliser comme un point de départ pour comparer les deux VB.Net les opérateurs (et ils sont des opérateurs, des fonctions pas, même si ils ont la fonction sémantique).
DirectCast()
est plus strict que le C# opérateur de coulée. Il ne vous permet de voter lorsque l'élément en cours de fonte est déjà le type coulée de. Il ne pourra pas faire de conversion. Ainsi, par exemple, vous ne pouvez pas lancer de short int, comme vous pouvez avec un C# (int)
exprimés. Mais vous pouvez lancer à partir d'un IEnumerable à un tableau, si votre sous-jacents IEnumerable
variable objet est vraiment un Array
. Et bien sûr vous pouvez lancer à partir de l'Objet à quoi que ce soit, en supposant que le type de votre instance de l'objet est vraiment quelque part en dessous de votre type moulé dans l'arbre d'héritage.
C'est souhaitable car cela le rend plus rapide. Il y a un peu moins de la conversion et de la vérification de type qui doit avoir lieu.
CType()
est moins strict que le C# opérateur de coulée. Il va faire des choses comme convertir une chaîne en un entier que vous ne pouvez pas faire avec un simple (int)
exprimés. Il a autant de pouvoir que l'appelant Convert.To___()
en C#, où l' _ est le type de cible de votre plâtre. C'est souhaitable, car il est très puissant, mais que la puissance est au prix de la performance n'est pas aussi rapide que DirectCast() ou C#'opérateur de cast, car il pourrait y avoir beaucoup de travail à faire pour terminer le casting.
En général, vous devriez préférer DirectCast()
quand vous le pouvez.
Enfin, vous avez raté un opérateur de coulée: TryCast()
, ce qui est une conséquence directe de l'analogique vers le C#' as
de l'opérateur.