вы можете написать метод расширения:
public static bool IsInt(this string pString)
{
int value;
return int.TryParse(pString, out value);
}
тогда ваш пример становится:
potential_integer.IsInt();
EDIT:
В последнее время я использовал общую форму этого.
public delegate bool TryParser<T>(string pString, out T pResult);
public static bool Is<T>(this string pString, TryParser<T> pTryParser)
{
T val;
return pTryParser(pString, out val);
}
Может затем использовать его следующим образом; он не идеален, но он более лаконичен, чем я нашел:
"1234".Is<int>(int.TryParse); // true
"asdf123".Is<int>(int.TryParse); // false
"1.2345".Is<float>(float.TryParse); // true
"1000".Is<byte>(byte.TryParse); // false
Теоретически, это также будет работать с пользовательскими TryParse
методами, если вы следовали той же схеме, что и официальные.
Обновление: если вы поддерживаете статический словарь методов TryParse
по типу, вы можете избежать прямой передачи метода. Словарь может быть даже заполнен при необходимости отражением.