문제

값이 정수인지 테스트하기 위해 정수를 사용해야하는 경우가 종종 있습니다. 그러나 tryparse를 사용하면 참조 변수를 함수에 전달해야하므로 항상 빈 정수를 만들어야합니다. 일반적으로 다음과 같은 것 같습니다.

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

나는 이것이 내가 원하는 모든 것이 단순한 진실 / 거짓 응답이라는 점을 고려하면 매우 번거 롭다는 것을 알았습니다. 이것에 접근하는 더 좋은 방법이 있습니까? 테스트하고 싶은 값을 전달하고 참 / 거짓 응답을받을 수있는 과부하 기능이없는 이유는 무엇입니까?

도움이 되었습니까?

해결책

정수를 선언 할 필요가 없습니다.

If Integer.TryParse(intToCheck, 0) Then

또는

If Integer.TryParse(intToCheck, Nothing) Then

.NET 3.5 기능이있는 경우 문자열에 대한 확장 방법을 만들 수 있습니다.

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

그런 다음 다음과 같이 전화하십시오.

If value.IsInteger() Then

죄송합니다. 내가 알고 있지만 .NET 3.5 위의 MyExtensions 클래스에 추가 할 수 있으며 검증이 필요하지 않으면 걱정하지 않습니다.

<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

그런 다음 간단히 사용하십시오

value.ToInteger()

유효한 정수가 아닌 경우 0이 반환됩니다.

다른 팁

vb.net을 사용하고 있으므로 iSnumeric 기능을 사용할 수 있습니다.

If IsNumeric(myInt) Then
    'Do Suff here
End If
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;
    }

}

이 코드를 시도하십시오.

Module IntegerHelpers

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

좋은 부분은 모듈 레벨 기능으로 선언되므로 예선없이 사용할 수 있다는 것입니다. 예제 사용

return IsInteger(mInt)

글을 쓰지 않는 이유는 무엇입니까? 확장 방법 코드를 정리하려면? 나는 한동안 vb.net을 작성하지 않았지만 여기에 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);
  }
}

J Ambrose Little 수행 2003 년에 isnumeric 점검 타이밍 테스트. CLR의 V2로 언급 된 테스트를 다시 시도 할 수 있습니다.

변형은 다음과 같습니다.

Int32.TryParse(input_string, Globalization.NumberStyles.Integer)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top