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

    +971

    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
    16. 16
    17. 17
    using System;
    
    public class Man
    {
        static int num;
        public Man parent = new Man();    //У каждого человека есть родители, ведь так?
    
        static Man()
        {
            num = 0;
        }
    
        public Man()
        {
            num++;
        }
    }

    Компилятор C# против перенаселения, вовремя выдаёт StackOverflowException, пока расплодиться не успели..

    Запостил: vistefan, 08 Февраля 2012

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

    • Зато если наладить объявление родителей только при первой попытке обращения к ним, то можно пользоваться конструкциями вроде
      me.parent.parent.parent.parent.parent....
      Ответить
      • Вот он, вот он код моей мечты, ребята, здоровенный!
        using System;
        
        public class Man
        {
            static int num;
            public int myNum;
            private Man parent;
        
            static Man()
            {
                num = 0;
            }
        
            public Man()
            {
                num++;
                myNum = num;
            }
        
            public Man Parent
            {
                get
                {
                    parent = new Man();
                    return parent;
                }
            }
        }


        Только я не отвечаю, если кто-то захочет вызывать родителей больше одного раза...
        Ответить
        • Говно какое-то. Речь даже не в мелочах типа:
          > myNum = ++num;
          И не в быдловском названии переменной:
          >myNum

          Дело в том, что дитя порождает родителя.
          Ответить
          • > Дело в том, что дитя порождает родителя.
            Значит надо сделать так:
            parent = old Man();
            Ответить
          • Преинкремент - по существу, а остальное - несущественно:
            Названия переменных вообще в жопу, это ж говнокод.ру
            А родители и дети в данном случае - это только тривиальные названия, мы же не имеем дела с наследованием и прочим. К тому же пример абстрактен.

            А вообще:
            >Говно какое-то.
            Я ошибаюсь, или на этом сайте это звучит как похвала? :)
            Ответить
            • >Вот он, вот он код моей мечты, ребята
              ...
              >Названия переменных вообще в жопу, это ж говнокод.ру
              Давай всё подряд совать в жопу. Это ж Говнокод.ру
              Ответить
              • http://clck.ru/_YAq

                Согласен, тут перебрал, но нельзя так же и отрицать факт твоей излишней серьёзности.
                Ответить
              • жопу в жопу
                WAIT! OH, SHI-
                Ответить
        • статический конструктор? о_0
          Ответить
          • Дык копипастил же

            В данном контексте действительно тупость
            Ответить
            • я просто джавист, у нас такой хрени нет. Что это? Как работает?
              Ответить
              • вроде бы выполняется при создании первого экземпляра класса.
                то бишь, инициализатор класса.
                Ответить
                • >вроде бы выполняется при создании первого экземпляра класса
                  Это далеко не единственная особенность статических конструкторов, так что подобное утверждение почти никак не определяет описываемое понятие.

                  >инициализатор класса
                  В корне неправильное представление о статических конструкторах
                  Ответить
                  • Про единственное и речи не было. А что с корнем?
                    Ответить
              • хм... я конечно извиняюсь, но не с Java ли в C# перекочевали статические конструкторы? Мне всегда казалось, что там есть что-то подобное... Хотя вроде гугл говорит что я дурак.

                Статические конструкторы - это конструкторы, имеющие право работать только со статическиеми членами класса. Исполюзуются, например, для установки начальных значений статических переменных, но, в отличие от обыкновенных конструкторов для каждого конкретного класса выполняется только один раз, а именно в момент первого создания экземпляра класса или первого обращения к статическому члену класса (для случаев, например, со static-классами), причем перед выполнением какого-либо другого конструктора, в том числе конструктора по умолчанию. Не может быть перегружен.
                Ответить
                • А, теперь понятно. Да, у нас это называется статическими блоками, используется часто и выглядит непохоже. Хех, у нас и динамические блоки могут быть вне конструктора.
                  Спасибо, буду знать.
                  Ответить
              • В жабе тоже есть своего рода статические конструкторы:

                static{
                ...
                }

                >выполняется при создании первого экземпляра класса.
                В жабе при загрузке JVMом класса в память.

                http://msdn.microsoft.com/en-en/library/k9x6w0hc(v=vs.90).aspx
                >A static constructor is used to initialize any static data, or to perform a particular action that needs to be performed once only. It is called automatically before the first instance is created or any static members are referenced.

                Суть та же.
                Ответить
        • > вызывать родителей
          к директору?
          Ответить
        • public Man Parent
              {
                  get
                  {
                      if (parent == nil)
                          parent = new Man();
                      return parent;
                  }
              }


          Тогда уж...
          Ответить
    • рекурсивная мать-одиночка
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • - Лёка, я люблю тебя... я так соскучился, я ... Лёка, ну щас кто-нибудь увидит, дурачок, боже...
      Ответить

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