Целое число. TryParse - лучший путь?

Это побочная заметка, но в идиоматическом питоне вы часто увидите такие вещи, как:

if x is None: 
    # some clauses

Это безопасно, потому что гарантированно будет один экземпляр объекта Null (т. е. None) .

33
задан Ryan Smith 7 January 2009 в 02:47
поделиться

6 ответов

Никакая потребность объявить целое число.

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
<час>

Извините, увлекание я знаю, но также и можно добавить это к классу MyExtensions выше в.Net 3.5 и не волноваться, если Вам не нужны проверки.

<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, если это не будет допустимое Целое число.

83
ответ дан 27 November 2019 в 17:36
поделиться

Так как Вы используете VB.net, можно использовать Функцию IsNumeric

If IsNumeric(myInt) Then
    'Do Suff here
End If
7
ответ дан 27 November 2019 в 17:36
поделиться
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;
    }

}
5
ответ дан 27 November 2019 в 17:36
поделиться

Попробуйте этот код.

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)
2
ответ дан 27 November 2019 в 17:36
поделиться

Почему бы не записать дополнительный метод для чистки кода? Я не записал 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);
  }
}
1
ответ дан 27 November 2019 в 17:36
поделиться

Дж Ambrose Little выполнил , тесты синхронизации для IsNumeric перепроверяют в 2003 . Можно хотеть повторить упомянутые тесты с v2 CLR.

0
ответ дан 27 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: