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

    +133

    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
    private static List<User> Users
    {
        get
       {
           if (_customers == null) {             _customers = new List<Customer>(); }
            lock (((ICollection)_customers).SyncRoot)
           {
                    return _customers;
           }
    }
    set
      {
          lock (((ICollection)Customer).SyncRoot)
          {
                _customers = value;
           }
       }

    Запостил: one12351, 27 Ноября 2014

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

    • праздный гавновопрос:

      а _customers - это volatile или нет?
      Ответить
    • Аккуратный говно вариантик:

      private static readonly List<Customer> _customers;
      static MyClass()
      {
          _customers = new List<Customer>();
      }
      private static List<User> Users
      {
          get
          {
             return new List<Customer>(_customers);
          }
          set
          {
            lock (this)
            {
                  _customers.Clear();
                  _customers.AddRange(value);
             }
         }
      }
      Ответить
      • lock (this) уж совсем жёстко.
        Рихтер и прочие умные люди завещли так не делать.

        Лучше уж так:
        private static readonly Object m_sync = new Object;
        ...
        set
        {
        lock(m_sync)
        {
        ///
        }
        }
        Ответить

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