Я нашел обходной путь для этой ошибки, но теперь мне действительно любопытно, почему это происходит, мне было интересно, была ли у кого-нибудь еще эта ошибка.
Моя функция заключается в следующем:
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 работает нормально, поэтому он не мешает мне продолжать, но теперь мне действительно интересно посмотреть, есть ли у кого-нибудь ответ на него.
Ждем некоторых ответов!
Шон
ИЗМЕНИТЬ – РЕШЕНО
Метод decimal.Parse работал нормально, во второй раз, когда функция выполнялась (была в цикле), сообщение не было оценено, поэтому средство чтения данных возвращало нулевое значение. Обертывание COALESCE вокруг моего расчета в SQL решило проблему. Следовательно, почему, как вы сказали, метод tryparse не выдавал исключение, просто сохраняя значение по умолчанию от 0 до _rating.