To zmodyfikowana wersja rozwiązania zaproponowanego przez pana Siira. Uważam, że dodanie metody rozszerzenia jest najlepszym rozwiązaniem do ponownego użycia i prostoty metody wywoływania.
public static bool IsNumeric(this String s)
{
try { double.Parse(s); return true; }
catch (Exception) { return false; }
}
Zmodyfikowałem treść metody, aby pasowała do 2 wierszy i usunąłem niepotrzebną implementację .ToString (). Dla tych, którzy nie są zaznajomieni z metodami rozszerzającymi, oto jak zaimplementować:
Utwórz plik klasy o nazwie ExtensionMethods . Wklej ten kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace YourNameSpaceHere
{
public static class ExtensionMethods
{
public static bool IsNumeric(this String s)
{
try { double.Parse(s); return true; }
catch (Exception) { return false; }
}
}
}
Zastąp YourNameSpaceHere rzeczywistą przestrzenią nazw. Zapisz zmiany. Teraz możesz korzystać z metody rozszerzenia w dowolnym miejscu aplikacji:
bool validInput = stringVariable.IsNumeric();
Uwaga: ta metoda zwróci wartość true dla liczb całkowitych i dziesiętnych, ale zwróci wartość false, jeśli ciąg zawiera przecinek. Jeśli chcesz akceptować dane wejściowe za pomocą przecinków lub symboli, takich jak „$”, sugerowałbym najpierw zaimplementowanie metody usuwania tych znaków, a następnie przetestowanie, czy IsNumeric.