Подтвердить что ты не робот

Int32.TryParse() возвращает ноль при неудаче - успех или сбой?

Я прочитал это из msdn около Int32.TryParse()

Когда этот метод возвращает, содержит 32-разрядное эквивалентное эквивалентное значение к числу, содержащемуся в s, если преобразование выполнено успешно, или ноль, если не удалось выполнить преобразование.

Но что произойдет, если переданная строка сама является строковым представлением '0'. Таким образом, TryParse вернет ноль. Как я могу узнать, успешный или неудачный?

4b9b3361

Ответ 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.
}