Это побочная заметка, но в идиоматическом питоне вы часто увидите такие вещи, как:
if x is None:
# some clauses
Это безопасно, потому что гарантированно будет один экземпляр объекта Null (т. е. None) .
Никакая потребность объявить целое число.
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, если это не будет допустимое Целое число.
Так как Вы используете 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);
}
}
Дж Ambrose Little выполнил , тесты синхронизации для IsNumeric перепроверяют в 2003 . Можно хотеть повторить упомянутые тесты с v2 CLR.