1. C# / Говнокод #12667

    +139

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    for (int i = 0; i < 100; i++)
    {
        string s = i.ToString();
    
        if (s.Length == 1)
        {
            s = "00" + s;
        }
    
        if (s.Length == 2)
        {
            s = "0" + s;
        }
    
        Console.WriteLine(s);
    }

    Из рабочего проекта. Парень не слышал про string.Format("{0:000}", i)

    Запостил: pewpew, 28 Февраля 2013

    Комментарии (15) RSS

    • Хммм... А зачем в рабочем проекте может понадобиться выводить на консоль числа от 0 до 99, да еще и в таком формате?
      Ответить
      • Ну, там не вывод в консоль был, а добавление в лист. Зачем - не помню. Консоль я просто для наглядности добавил.
        Ответить
        • Лично я не вижу ничего плохого в незнании форматированного вывода в шарпе, т.к. самому хотелось бы писать привычное %03d и не запоминать очередное хитрое нововведение от Microsoft.
          Ответить
          • Ну здесь еще даты и прочие объекты оказывается можно выводить. Видимо из-за этого и пришлось им делать новый формат для строк формата.
            Ответить
          • показать все, что скрытоНу вот мы и нашли автора сего кода )
            Ответить
            • Ошибка: Отсутствует открывающая скобка.
              Ответить
              • А ещё бывает компилятор выдаёт
                "я не буду компилировать твою прогу, в ней ошибка :)"
                Ответить
                • Реальное сообщение от gcc:
                  gcc: фатальная ошибка: не заданы входные файлы
                  компиляция прервана.
                  Ответить
    • > string.Format("{0:000}", i)
      Вот шарп не знаю, но, имхо, такие строки формата - говно не меньшее чем оригинал. Если я правильно понимаю, то чтобы вывести нулевой аргумент с 20 разрядами, мне понадобится написать "{0:0000000000000000000}"? What the hell?! Почему я должен считать нолики сам, если в той же сишке достаточно было указать их количество...

      P.S. Открыл доку, есть более адекватный способ - D3 и D20 вместо этих пачек нулей: http://ideone.com/olyO51
      Ответить
      • Это видимо из их Бейсика тянется, где для форматирования надо было писать ####################.
        Ответить
        • Ну там, если правильно помню, вроде бы это имело смысл, т.к. скобками не обрамлялось, номера аргументов не писались, и строка формата имела такую же длину как и выхлоп. А в c# это как-то неуместно смотрится.
          Ответить
          • А вдруг на C# будет писать гуманитарий, которому проще скопипастить подходящую по длине цепочку ноликов, чем их посчитать?
            Ответить
        • Эволюция зарубок на столбах форматирования данных происходит постепенно...
          http://www.inform.sch901.edusite.ru/p45aa1.html
          Ответить
    • А лично мне нравится маски форматирования в C#. Есть же и короткие варианты.
      Ответить
    • C##########
      Ответить

    Добавить комментарий