public class Foo
{
public static List<long> myList = new List<long>() { 1,2,3 }
}
В другом методе:Incosistent поведение Список <long> собственности
var testList = Foo.myList;
Если я ставлю точку останова в последней строке и проверить testList
это дает мне разные длины, время от времени.
Когда я использую ToList()
на Foo.myList
, кажется, что он ведет себя правильно. Но почему?
Edit:
Моя проблема заключалась в том, что я сделал вызов Ajax> модифицирована Foo.myList
> новый Ajax вызова> еще раз принес Foo.myList
и получил измененное значение.
Потому что вы сделали изменить его в другой метод? Проверьте все добавления и удаления вызовов на них и где вы передаете ссылку. Были ли добавлены или удалены элементы? Это может помочь сузить проблему. Чтобы быть в безопасности, вы можете сделать это должным образом, чтобы вернуть копию списка, чтобы вы могли быть уверены, что никто не модифицирует его случайно. –
Если вы не уверены, что можете вывести из списка и переопределить методы «Добавить и удалить», чтобы выбросить execeptions. Затем замените свой список на свой ReadOnlyList. Это даст вам непосредственное представление о том, где происходит изменение. –