У меня была аналогичная проблема, которую я решил с помощью следующей техники:
Исключение было выбрано в следующей строке кода (см. текст, украшенный ** ниже):
static void Main(string[] args)
{
double number = 0;
string numberStr = string.Format("{0:C2}", 100);
**number = Double.Parse(numberStr);**
Console.WriteLine("The number is {0}", number);
}
После небольшого исследования я понял, что проблема заключалась в том, что форматированная строка включала знак доллара ($), который методы Parse / TryParse не могут решить (т. е. отключить). Поэтому, используя метод Remove (...) строкового объекта, я изменил строку на:
number = Double.Parse(numberStr.Remove(0, 1)); // Remove the "$" from the number
. В этот момент метод Parse (...) работал как ожидалось.
Проблема, которую вы наблюдаете, основана на использовании assert
. Так как assert
напечатает сообщение о сбое, которое обычно (всегда?) Включает в себя реальный тест подтверждения (21 <= qrsize && qrsize <= 177 && 0 <= x && x < qrsize && 0 <= y && y < qrsize
), имя файла и номер строки.
Если вы скомпилируете с -DNDEBUG
, вы отключите assert
с. Я не копался в полученном объектном файле, но фрагмента, который вы указали ранее, там нет.