Си диез / Говнокод #5093 Ссылка на оригинал

0

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

Запостил: Говногость Говногость, (Updated )

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

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

        Хотя именно преобразование в строку таким образом выглядит наиболее неприятно
        Ответить
        • неприятно, но придется терпеть?
          valu.toString() же!
          (в басиках не силен, возможно существует способ еще приличнее выразить то, чего хочется)
          Ответить
  • Этож нужно было запостить суда кучу говнометодов преобразования в строку...
    Ответить
  • Тут уже написали, что правильно будет valu.ToString(). Поясню, для недотнетчиков: в выражении ""+valu метод ToString() будет вызван автоматически. То есть будет вызов метода плюс конкатенация. Причём, если не ошибаюсь (лень уточнять - Новый год на носу, настроение не рабочее), ещё и сборщик мусора пнём, ибо строки иммутабельны.

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

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8