Почему ShellTile.ActiveTiles.Count () возвращает разные результаты сразу после последующих вызовов? - PullRequest
2 голосов
/ 10 декабря 2011

Рассмотрим следующее:

        IEnumerable<ShellTile> pinnedtiles = ShellTile.ActiveTiles;
        Console.WriteLine(pinnedtiles.Count());
        Console.WriteLine(pinnedtiles.Count());

Если у вас больше 0 ActiveTiles, первый вызов Count () вернет правильное значение, а второй вызов вернет 0.

Если вы не устанавливаете ShellTile.ActiveTiles в локальную переменную, она работает нормально. Я предполагаю, что это потому, что ActiveTiles на самом деле является экземпляром внутреннего класса ShellTileEnumerator и по какой-то причине при доступе через интерфейс IEnumerable он действует как перечислитель только для пересылки. Похоже на вероятную «ошибку», или я что-то неправильно понимаю?

1 Ответ

1 голос
/ 10 декабря 2011

Да, вы правы

  MessageBox.Show(ShellTile.ActiveTiles.Count().ToString());
  MessageBox.Show(ShellTile.ActiveTiles.Count().ToString());

Вышеуказанное будет работать, но не при назначении IEnumeable ....:)

Другой простой способ - назначить его спискуIEnumerable.Это тоже работает

 List<ShellTile> pinnedtiles = ShellTile.ActiveTiles.ToList(); ;
 MessageBox.Show(pinnedtiles.Count().ToString());
 MessageBox.Show(pinnedtiles.Count().ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...