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

    +8

    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
    public static bool IsObjectIs<T>(object o)
    {
        if (o == null)
            return false;
    
        try
        {
            object b = (T)o;
            return true;
        }
        catch
        {
            return false;
        }
    }

    Такая вот реализация c# оператора 'is'

    Запостил: lonkimonki, 24 Марта 2016

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

    • А is работает для примитивных типов?
      Этот код видимо да.
      Ответить
      • примитивные типы? у тебя java головного мозга
        http://www.dotnetperls.com/is
        Ответить
      • примитивные типы в C# являются т.н. valuetypes
        это те же самые объекты, просто они на стеке живут
        Ответить
        • Не всегда. Они, как правило, живут на стеке.
          Ответить
          • в жабочке и объективной сишечке такой хуйни нет

            структуры и объекты (што одно и тоже) всегда живут в куче
            точнее говоря конпелятор может поселить их где хочет, но работать с ними надо так, словно они всегда в куче и у тебя от них только укойзатель

            в объективной сишечке блоки (тамошние лямбды) могли жить в стеке, и могли наебать незадачливого программиста, рискнувшего передать указатель на них куда-то
            но со времен ARC они автоматом переселяются в кучу при первом чихе
            Ответить
            • >> структуры и объекты (што одно и тоже) всегда живут в куче

              а нахуя 2 конструкции , которые делаю одно и тоже? Ладно в плюсах для совместимости оставили, но в остальных языках нахуй такой финт не нужен
              Ответить
              • А в шарпе value type аля структуры вообще умеют жить в куче (не полем класса и не элементом массива)?
                Ответить
                • Нет. Только на стеке. А еще так целый ворох ограничений типа нельзя переопределить конструктор по умолчаю, от структуры наследоваться нельзя и еще по мелочи
                  Ответить
                  • а нельзя разве их боксануть как-то?

                    Блин, я все забыл
                    А ведь 10 лет назад я читал Рихтера и даже сдавал MCP
                    Ответить
                • https://ideone.com/rzoCEA
                  Ответить
                  • Т.е. всё-таки могут и на куче?
                    Ответить
                    • Нет, даже через нью только на стеке создается.

                      а нулабл - просто обвертка
                      Ответить
                      • > даже через нью только на стеке создается
                        У вас там int'ы ещё не надо создавать через new?
                        Ответить
              • > Ладно в плюсах для совместимости оставили, но в остальных языках нахуй такой финт не нужен
                Это как раз ObjC полностью совместим с сишкой, а не кресты.
                Ответить
                • объективные сишечки изначально могли вообще реализовываться проепроцессором
                  Ответить
    • В моём коде, например, такой хуйни нет.
      Ответить

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