TryCast pour la chaîne en entier en VB.NET
Je ne comprends pas du tout comment utiliser TryCast dans mon code, mais c'est quelque chose que je dois utiliser pour la validation de la saisie de l'utilisateur. J'ai fait plusieurs recherches et a examiné plusieurs questions ici, mais personne ne semble réellement en mesure de dire comment l'utiliser, et le site web MSDN ne semble pas aider du tout.
Function ValidateInput(Var_In As String) As Integer
If TryCast(Var_In, Integer) = Nothing Then
Return vbNull
Else
Return Var_In
End If
End Function
Le message d'erreur indique que
L'opérande doit être de type référence, mais Entier est de type valeur
Quelle est l'explication de ce que j'ai fait de mal?
TryParse n'accepte pas plus de 10 chiffres ainsi, par exemple, une entrée de "12345678901" ne sera pas accepté. Comment puis-je résoudre ce problème?
- Pour les types de valeur (comme int) utilisation
Integer.TryParse
pour valider la saisie de l'utilisateur. Comme le tre msgs dit, TryCast est pour les objets/les types de référence. Voir Types de Valeur et les Types Référence - Vous n'avez pas besoin d'une fonction. Utilisation
Integer.TryParse
le résultat sera un booléen vous dire si il est une valeur de type int, si elle réussit, la valeur sera attribuée TryParse doesn't accept more than 10 digits ... an input of "12345678901"... won't be accepted
C'est parce que cette chaîne ne peut pas être considéré comme un entier. La valeur maximale pour un int est2147483647
Vous devez vous connecter pour publier un commentaire.
Nous allons essayer de comprendre les différences entre TryCast, de Convertir et de TryParse.
TryCast
Cette fonction va tenter de convertir un objet en un autre type, tant qu'il est un type de référence.
Depuis Entier est un type de valeur, il ne fonctionnera pas, nous devons donc comprendre quelque chose...
Convertir
Convertir de Classe sur MSDN
À partir de MSDN:
Afin que nous puissions essayer:
Le problème c'est qu'il va générer une exception
InvalidCastException
si il est impossible de faire la conversion.TryParse
Cette fonction est d'essayer de convertir un
String
dans quelque chose que vous voulez. Et il ne génère pas d'exception:Limitation
Conversion d'une Chaîne en un Entier peut parfois être difficile... Si la Chaîne de caractères représente un nombre qui est plus grand ou moindre que
Integer.MaxValue
etInteger.MinValue
, vous allez vous retrouver avec pas de conversion...De sorte que vous pouvez aller avec un
Double
:Ou personnellement, si vous savez qu'il va être un nombre Décimal:
Voir Décimales sur MSDN
Décimal a encore un Max et Min de la valeur, selon le site web MSDN:
Convertir.ChangeType
Cette une est également intéressante, mais elle est un peu bizarre...
Vous tentez d'effectuer
TryCast
contre un Entier, qui est un type de valeur.TryCast
ne fonctionne que sur les référence types, tels que (mais non limité à) laClass
,Object
, ouString
type.Si vous essayez de convertir le paramètre d'entrée d'un nombre Entier, vous pouvez essayer l'une des méthodes de la
Convert
classe, commeConvert.ToInt32()
ouInteger.TryParse
.Au lieu de TryCast, utilisez TryParse:
1
quand il échoue.Beaucoup mieux est d'utiliser TryParse: