Int32.TryParse() возвращает ноль при неудаче - успех или сбой?
Я прочитал это из msdn около Int32.TryParse()
Когда этот метод возвращает, содержит 32-разрядное эквивалентное эквивалентное значение к числу, содержащемуся в s, если преобразование выполнено успешно, или ноль, если не удалось выполнить преобразование.
Но что произойдет, если переданная строка сама является строковым представлением '0'. Таким образом, TryParse
вернет ноль. Как я могу узнать, успешный или неудачный?
Ответы
Ответ 1
Нет, TryParse
возвращает true или false, чтобы указать успех. Значение параметра out
используется для разобранного значения или 0 при сбое. Итак:
int value;
if (Int32.TryParse(someText, out value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}
Итак, если вы пройдете "0", он выполнит первый блок, тогда как если вы пройдете "плохое число", он выполнит второй блок.
Ответ 2
Метод возвращает логическое значение, указывающее на успех или неудачу. Используйте это. Целое число является ссылочным параметром, переданным в метод, и не имеет ничего общего с возвращаемым значением метода.
Здесь прототип Int32.TryParse()
из документации. Очень ясно, что он возвращает логическое значение. Второй параметр - это out int
, что означает, что аргумент передается по ссылке, поэтому он будет мутирован методом.
public static bool TryParse(
string s,
out int result
)
Итак, чтобы проверить успех или неудачу, сделайте следующее:
int value;
if (Int32.TryParse("0", out value))
Console.WriteLine("Parsed as " + value);
else
Console.WriteLine("Could not parse");
Ответ 3
TryParse() возвращает логическое значение.
Int32 testInt;
if (!Int32.TryParse("123", out testInt))
{
MessageBox.Show("Is not a Int32!");
return; // abbrechen
}
MessageBox.Show("The parst Int32-value is " + testInt);
Ответ 4
Метод Int32.TryParse()
возвращает значение boolean
в качестве возврата и предоставляет преобразованное значение в качестве параметра out. Таким образом, вы можете проверить значение return boolean
для статуса.
private static void TryToParse(string value)
{
int number;
bool result = Int32.TryParse(value, out number);
if (result)
{
Console.WriteLine("Converted '{0}' to {1}.", value, number);
}
else
{
if (value == null) value = "";
Console.WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
Ответ 5
используя С# 7, теперь вы можете объявить переменную в TryParse как...
if (Int32.TryParse(someText, out int value))
{
// Parse successful. value can be any integer
}
else
{
// Parse failed. value will be 0.
}