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

    +118

    1. 1
    2. 2
    object res = DataConnection.ExecuteScalar(sql);
    int count = (int)(long)res;

    Чтокуда?

    Запостил: Vadimyan, 14 Апреля 2011

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

    • Я не совсем в курсе, что возвращает ExecuteScalar, но если возвращается long, то все написано абсолютно верно.
      Если сразу приводить к лонгу, то получим Ексепшн.
      Ответить
      • Возвращает первый столбец первой строки набора результатов или null.
        Так откуда Exception?
        Вот так будет нормально:
        int count = (int)(long)DataConnection.ExecuteScalar( sql);
        Ответить
        • То есть конструкция (int)(long) это вообще норма вещей и все так делают?
          Ответить
          • Лично я проблем не вижу.
            Ответить
            • а потом ещё преобразовать в строку через (string)
              Ответить
              • И присвоить результат всего обжекту
                Ответить
          • Convert.ToInt32(Convert.ToInt64((string) (object)DataConnection.ExecuteScalar(sql );));
            Ответить
          • object a = 0L;
            long b = (long)a; // Нормально выполнится
            int c = (int)(long)a; // Нормально выполнится
            int d = (int)a; // - Invalid Type Cast Exception
            Ответить
        • Ну т.е. в коде проблем нет?
          Ответить
    • Компилироваться не будет. long не переводится в int так как не помещается
      Ответить
      • Что значит не помещается???
        Результат-то будет, но есть вероятность того, что он будет не тот, которого ждут.
        Ответить

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