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

    +122

    1. 1
    2. 2
    3. 3
    int valu=...;
    ...
    string vals=""+valu;

    Запостил: Говногость, 28 Декабря 2010

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

    • самодокументированный код, однако
      Ответить
    • Валс? Валю?? прибалты к нашим дивчонкам клеются!!!
      Ответить
      • а вы видели прибалтийских девушек? моментом все желание отклеивается
        вот и клеются на более сладкое )
        Ответить
    • В данном случае бред, но для преобразования int в float
      int x, y;
      
      float z = x * 1.0f / y;
      // короче и понятнее, чем
      float z = static_cast<float>(x) / y;
      Ответить
      • Где здесь C#?
        Ответить
        • Специфики C# в исходном посте нет, конкатенировать строку с числом много где можно.
          Смысл моего сообщения в том, что иногда вместо явного преобразования типов (static_cast/SomeType.valueOf/...) проще и понятнее применять какую-то операцию, которая неявно приведёт аргумент к нужному типу. (например <<+ "">>, или <<* 1.0>>)

          Хотя именно преобразование в строку таким образом выглядит наиболее неприятно
          Ответить
          • неприятно, но придется терпеть?
            valu.toString() же!
            (в басиках не силен, возможно существует способ еще приличнее выразить то, чего хочется)
            Ответить
      • Извините, но для преобразования int во float советую брять пример с http://govnokod.ru/5090
        Ответить
    • Чем
      "" + valu
      хуже, чем
      String.Format("{0}", valu)
      ?
      Ответить
      • тоже зачетно
        Ответить
      • Запостите это на говнокод. :D
        Ответить
      • Нехочу постить, как верно. Буду ждать ещё говна. :)
        Ответить
        • Вот так верно,
          string vals = String.Empty;
          while (valu != 0)
          {
              vals = (valu % 10)  + vals;
              value /= 10;
          }

          ((:

          P.S. А на самом деле, короче, чем автор оригинала, вряд ли можно это сделать. При условии, что нельзя выкидывать переменные в результате неведомой аццкой оптимизации кода.
          Ответить
      • String.valueOf(valu) - в C# должен быть аналог такой функции
        Ответить
    • Этож нужно было запостить суда кучу говнометодов преобразования в строку...
      Ответить
    • String.TryParse(valu, out vals); :D
      Ответить
    • Тут уже написали, что правильно будет valu.ToString(). Поясню, для недотнетчиков: в выражении ""+valu метод ToString() будет вызван автоматически. То есть будет вызов метода плюс конкатенация. Причём, если не ошибаюсь (лень уточнять - Новый год на носу, настроение не рабочее), ещё и сборщик мусора пнём, ибо строки иммутабельны.

      Хотя не исключено, что компилятор соптимизирует.
      Ответить
      • в строке "" + vale произойдет вызов метода String.Concat(object, object), тобишь произойдет дополнительный boxing для valu. а там внутри уже ToString()
        Ответить
        • Глянул в ILDASM. Действительно, боксинг и String.Concat(object, object). Печально... Я в тайне надеялся, что компилятор выкинет пустую строку вообще, и лишнего не будет.
          Ответить
          • >Действительно, боксинг
            И так понятно. Зачем глядеть...
            Ответить
            • > И так понятно.
              Ну не скажи! Я думал, сначала вызовется ToString(), а потом String.Concat(string, string)
              Ответить
          • >компилятор выкинет пустую строку вообще
            Оптимизацию включали?
            Ответить
    • .
      Ответить

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