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

    +152

    1. 1
    2. 2
    3. 3
    SqlDataReader reader;
    ...
    int id = int.Parse(reader["ID"].ToString());

    Нет, ID - не какой-нибудь nvarchar, а вполне себе integer

    Запостил: guest, 23 Апреля 2009

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

    • 75643:
      Нормальный код, что не так?
      Ответить
    • страйкер:
      а то, что int переводится в String и снова парситься в int
      Ответить
    • Lanfear:
      reader хранит в себе типы object,
      поэтому приведение к int нужно все равно.
      Ответить
    • 75643:
      [quote=страйкер]а то, что int переводится в String и снова парситься в int[/quote]
      Приведите работающие решение лучше этого.
      Ответить
    • [quote]Приведите работающие решение лучше этого.[/quote]
      Вы что, издеваетесь?
      int id = (int)reader["ID"];
      Ответить
    • 75643:
      [quote=Говногость]Вы что, издеваетесь?
      int id = (int)reader["ID"];[/quote]
      Это, конечно, откомпилится, но попробуйте запустить. Где говнокод, так это у вас в комментарии.
      Ответить
    • [qoute]Это, конечно, откомпилится, но попробуйте запустить.[/qoute]
      Только после вас, лично я именно эту конструкцию и использую, и везде исправлял приведенный пример. И пожалуйста, заканчивайте показывать себя быдлокодером, тошно читать.
      Ответить
    • страйкер:
      [quote]Приведите работающие решение лучше этого.[/quote]
      К сожалению (а может быть и к счастью), не C# программист, но склонен считать, что это говнокод. Если это нормально в C#, то смело могу предположить тоже самое и об этом языке
      Ответить
    • [quote=страйкер]К сожалению (а может быть и к счастью), не C# программист, но склонен считать, что это говнокод. Если это нормально в C#, то смело могу предположить тоже самое и об этом языке[/quote]
      Это не нормально, я гарантирую это :)
      Специально для тех, кто никак не может понять, в чем здесь говнокод, поясняю:
      Действительно, в SqlDataReader, как и DataRow массив данных лежит в object, но только потому, что реально там данные, соответствующие типу в базе. Например, если в базе тип nvarchar, то будет string, если bit, то bool, и тд. Поэтому достаточно привести object к нужному типу. А переводить его к строке, а ее уже парсить обратно в int.
      Ответить
    • все правильно, ридер знает про реальные типы объектов из базы, поэтому достаточно просто приведения ((int)reader["ID"]), а перевод в строку и ее парсинг займет больше ресурсов
      Ответить

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