- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 
if (needParce)
{
    try
    {
        count = decimal.Parse(tb_count.Text.Replace(".", ","));
    }
    catch
    {
        count = decimal.Parse(tb_count.Text.Replace(",", "."));
    }  
}
                                Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+108
if (needParce)
{
    try
    {
        count = decimal.Parse(tb_count.Text.Replace(".", ","));
    }
    catch
    {
        count = decimal.Parse(tb_count.Text.Replace(",", "."));
    }  
}
                                
ан нет. просто автор не вспомнил и решил сделать так сказать "условную компиляцию"
double dd = double.Parse(str.Replace(".",","));
Интересный результат, на самом деле выходит, получается что replace не даст никакого эффекта, если он не находит искомую подстроку или символ для замены, а при вызове double.Parse, видимо, происходит Trim входной строки и в итоге 1 0 превращается в 10 и dd = 10.0. Хитрый майкрософт. Ошибка просто проглатывается, фактически.
При этом
string str1 = "1,0";
string str2 = "1.0";
double dd1 = double.Parse(str1);
double dd2 = double.Parse(str2);
такой код породит ошибку только во втором случае, тогда нафига вот это вот было?
count = decimal.Parse(tb_count.Text.Replace(",", "."));
Хотя решение все равно через жопу, можно было попросить спарсить с другими настройками.
Да ... были времена.
к тому же.