Я нашел обходной путь для этой ошибки, но теперь мне действительно любопытно, почему это происходит, и мне было интересно, если бы кто-то еще имел эту ошибку.
Моя функция выглядит следующим образом:
public void Blog_GetRating(int blogID, ref decimal rating, ref int voteCount)
{
// Sql statements
// Sql commands
if (DataReader.Read())
{
// this line throws a 'Input string was not in a correct format.' error.
rating = decimal.Parse(DataReader["Rating"].ToString());
// this works absolutly fine?!
decimal _rating = 0;
decimal.TryParse(DataReader["Rating"].ToString(), out _rating);
rating = _rating;
}
}
Кто-нибудь когда-либо видел это раньше?
Что еще страннее, если я наберу это:
rating = decimal.Parse("4.0");
, который работает нормально, 4.0 - это то, что выходит из моего DataReader.
Как я уже говорил ранее, метод TryParse работает нормально, поэтому он не мешает мне нести, но теперь мне действительно интересно посмотреть, есть ли у кого-нибудь ответ на него.
С нетерпением жду некоторых ответов!
Sean
РЕДАКТИРОВАТЬ - РЕШЕНО
Метод decimal.Parse работал нормально, во второй раз, когда функция работала (была в цикле), сообщение не было оценено, поэтому считыватель данных возвращал нулевое значение. Обертывание COALESCE вокруг моего вычисления в SQL решило проблему отлично. Следовательно, как вы сказали, метод tryparse не генерирует исключение, а просто сохраняет значение по умолчанию от 0 до _rating.