Ответ 1
Используйте метод int.TryParse.
string x = "42";
int value;
if(int.TryParse(x, out value))
// Do something
Если он успешно разбирает, он вернет true, а результат out будет иметь свое значение как целое число.
Я просто любопытно, есть ли что-то, встроенное в язык С# или в .net framework, который проверяет, является ли что-то целым числом
if (x is an int)
// Do something
Мне кажется, что может быть, но я всего лишь студент первого курса по программированию, поэтому не знаю.
Используйте метод int.TryParse.
string x = "42";
int value;
if(int.TryParse(x, out value))
// Do something
Если он успешно разбирает, он вернет true, а результат out будет иметь свое значение как целое число.
Я думаю, что я помню, что смотрел сравнение производительности между int.TryParse и int.Parse Regex и char.IsNumber и char.IsNumber был самым быстрым. Во всяком случае, независимо от производительности, вот еще один способ сделать это.
bool isNumeric = true;
foreach (char c in "12345")
{
if (!Char.IsNumber(c))
{
isNumeric = false;
break;
}
}
Для решения Wil P (см. выше) вы также можете использовать LINQ.
var x = "12345";
var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit);
Если вы просто хотите проверить тип передаваемой переменной, вы, вероятно, можете использовать:
var a = 2;
if (a is int)
{
//is integer
}
//or:
if (a.GetType() == typeof(int))
{
//is integer
}
Эта функция сообщит вам, содержит ли ваша строка ТОЛЬКО символы 0123456789.
private bool IsInt(string sVal)
{
foreach (char c in sVal)
{
int iN = (int)c;
if ((iN > 57) || (iN < 48))
return false;
}
return true;
}
Это отличается от int.TryParse(), который скажет вам, будет ли ваша строка COULD BE целой. например. "123\r\n" вернет TRUE из int.TryParse(), но FALSE из вышеуказанной функции.
... Просто зависит от вопроса, который вам нужно ответить.
его простой... используйте этот кусок кода
bool anyname = your_string_Name.All(char.IsDigit);
он вернет true, если ваша строка имеет целочисленный другой мудрый false...
Я кодировал около 2 недель и создал простую логику для проверки целого числа.
Console.WriteLine("How many numbers do you want to enter?"); // request a number
string input = Console.ReadLine(); // set the input as a string variable
int numberTotal; // declare an int variable
if (!int.TryParse(input, out numberTotal)) // process if input was an invalid number
{
while (numberTotal < 1) // numberTotal is set to 0 by default if no number is entered
{
Console.WriteLine(input + " is an invalid number."); // error message
int.TryParse(Console.ReadLine(), out numberTotal); // allows the user to input another value
}
} // this loop will repeat until numberTotal has an int set to 1 or above
вы также можете использовать приведенное выше в цикле FOR, если хотите, не объявляя действие в качестве третьего параметра цикла, например
Console.WriteLine("How many numbers do you want to enter?");
string input2 = Console.ReadLine();
if (!int.TryParse(input2, out numberTotal2))
{
for (int numberTotal2 = 0; numberTotal2 < 1;)
{
Console.WriteLine(input2 + " is an invalid number.");
int.TryParse(Console.ReadLine(), out numberTotal2);
}
}
если вам не нужен цикл, просто удалите всю скобку цикла
private bool isNumber(object p_Value)
{
try
{
if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int)))
return true;
else
return false;
}
catch (Exception ex)
{
return false;
}
}
То, что я написал некоторое время назад. Некоторые хорошие примеры выше, но только мои 2 цента стоит.
существует простой метод в С# 7
// if input 10
var input = int.TryParse(Console.ReadLine(), out var output);
// input = true, output = 10
// or if input will be "abcd", you will get:
// input = false, output = 0
на входе у вас будет ложь или истина, а на выходе вы будете преобразовывать число, если оно может быть преобразовано.