Непредсказуемая инициализация переменных
От: Ummon Россия  
Дата: 15.09.10 14:55
Оценка:
Доброго времени суток!

Имеется такой класс:
public static class SomeStaticClass
{
    private static List<MyClass> mList = null;

    public static List<MyClass> MyClassList
    {
        get
        {
            if (mList == null)
                mList = GetList();

            return mList;
        }
    }

    private static List<MyClass> GetList()
    {
        List<MyClass> list = new List<MyClass>();
        // list.Add
        return list;
    }
}

Приватная переменная используется только в свойстве и нигде больше в классе не встречается, вся работа идет через свойство.
Иногда возникает ситуация, когда лист не заполнен, но уже создан.
Ставлю брейкпоинт на if, запускаю приложение — вижу, что mList уже не null, но не содержит ни одного элемента (в GetList гарантированно добавляются данные).
Останавливаю приложение, запускаю по-новой — та же история. Такое поведение стабильно повторяется. Но стоит сделать ребилд солюшена — все опять встает на свои места.
Баг может не проявляться несколько дней, потом опять проявиться и так до ребилда.
Как такое может происходить, я вообще не представляю.
VS2010, Fw4.
Проект, благо, пока только в разработке, но если подобный прикол случится в продакшене — это ж ппц ))

Может, кто сталкивался с подобным? Какие-нибудь идеи?..

Спасибо за внимание!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.