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

    +142

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    public String ExecuteInDispancerMonitoring
            {
                get
                {
                    string st = "";
                    IndividualService service = this;
                    int iter = 100;
                    while (iter != 0)
                    {
                        if (service.ParentService != null)
                        {
                            service = service.ParentService;
                            if (service is DispanserMonitoring)
                            {
                                st = service.CalcStrServiceName; // Строковое представление названия услуги
                                if (service.CalcStartDate.HasValue)
                                {
                                    st += " c " + service.CalcStartDate.Value.ToShortDateString();
                                }
                                return st;
                            }
                        }
                        else
                        {
                            return st;
                        }
                        iter--;
                    }
                    return "";
                }
            }

    Запостил: vldalx, 08 Июля 2015

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

    • Забыл добавить: максимальный уровень вложенности не более 4, автор взял 100. что бы наверняка!
      Ответить
      • А зачем там вообще это ограничение по глубине? Юзер может умудриться зациклить услуги?
        Ответить
        • зацикливание исключено. о чем думал автор, для меня загадка.
          все надо было сделать, это подняться по иерархии услуг до типа DispanserMonitoring и взять значение из пары свойств
          Ответить
        • Тут же нет рекурсии, при чем тут глубина? Просто автор стесняется спросить длину коллекции
          Ответить
          • > длину коллекции
            >> service = service.ParentService;
            Ответить
            • Да там вообще какой то бред - переменная присваивается потом сразу затирается в форыче

              а, это иф

              сорри, не врубился в код

              Мда, царский обход с ограничением колличества узлов
              Ответить
            • var service = this;
                              while (service.ParentService != null)
                              {
                                  service = service.ParentService;
                                  if (service is DispanserMonitoring)
                                  {
                                      var st = service.CalcStrServiceName; 
                                      if (service.CalcStartDate.HasValue)
                                          st += " c " + service.CalcStartDate.Value.ToShortDateString();
                                      return st;
                                  }
                                  
                              }
                              return string.Empty;
              Ответить
    • за такое описание геттера проперти можно и ногой в лицо
      Ответить

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