visual studio ejemplo vb.net tryparse

vb.net - studio - Integer.TryParse-¿una mejor manera?



tryparse visual studio (7)

¿Por qué no escribir un método de extensión para limpiar su código? No he escrito VB.Net por un tiempo, pero aquí hay un ejemplo en c #:

public static class MyIntExtensionClass { public static bool IsInteger(this string value) { if(string.IsNullOrEmpty(value)) return false; int dummy; return int.TryParse(value, dummy); } }

A menudo me veo en la necesidad de utilizar Integer.TryParse para comprobar si un valor es un número entero. Sin embargo, cuando usa TryParse, tiene que pasar una variable de referencia a la función, por lo que siempre necesito crear un entero en blanco para pasar. Por lo general, se ve algo así como:

Dim tempInt as Integer If Integer.TryParse(myInt, tempInt) Then

Encuentro esto bastante incómodo considerando que todo lo que quiero es una simple respuesta Verdadero / Falso. ¿Hay una mejor manera de abordar esto? ¿Por qué no hay una función sobrecargada donde puedo pasar el valor que quiero probar y obtener una respuesta verdadero / falso?


Como está utilizando VB.net puede usar la función IsNumeric

If IsNumeric(myInt) Then ''Do Suff here End If


No es necesario declarar el número entero.

If Integer.TryParse(intToCheck, 0) Then

o

If Integer.TryParse(intToCheck, Nothing) Then

Si tiene la capacidad de .Net 3.5, puede crear un método de extensión para cadenas.

Public Module MyExtensions <System.Runtime.CompilerServices.Extension()> _ Public Function IsInteger(ByVal value As String) As Boolean If String.IsNullOrEmpty(value) Then Return False Else Return Integer.TryParse(value, Nothing) End If End Function End Module

Y luego llamar como:

If value.IsInteger() Then

Lo siento, dejarme llevar, lo sé, pero también puedes agregar esto a la clase MyExtensions de arriba en .Net 3.5 y no preocuparte a menos que necesites validaciones.

<System.Runtime.CompilerServices.Extension()> _ Public Function ToInteger(ByVal value As String) As Integer If value.IsInteger() Then Return Integer.Parse(value) Else Return 0 End If End Function

Entonces simplemente usa

value.ToInteger()

Esto devolverá 0 si no es un Entero válido.


Prueba este código

Module IntegerHelpers Function IsInteger(ByVal p1 as String) as Boolean Dim unused as Integer = 0 return Integer.TryParse(p1,unused) End Function End Module

Lo bueno es que, dado que se declara como una función de nivel de Módulo, se puede usar sin un calificador. Ejemplo de uso

return IsInteger(mInt)


Una variación sería:

Int32.TryParse(input_string, Globalization.NumberStyles.Integer)



public static class Util { public static Int32? ParseInt32(this string text) { Int32 result; if(!Int32.TryParse(text, out result)) return null; return result; } public static bool IsParseInt32(this string text) { return text.ParseInt32() != null; } }