Из блога Майка Сноу: Поддержка наборов данных в Silverlight

Silverlight предоставляет несколько вариантов поддержки наборов данных для их хранения и извлечения. В этом совете я покажу вам различные пути использования этих возможностей. Не забудьте добавить пространство имен System.Collections к вашему коду.

BitArray. BitArray это класс, иллюстрирующий как управлять коллекцией битовых значений, представленных значениями true (1 = бит включен) или false (0 = бит выключен). Следующий пример показывает использование BitArray. Помните, что BitArray имеет множество перегруженных конструкторов, здесь же представлен только один из них.

 BitArray bitArray = new BitArray(4);
  
 // Add
 bitArray[0] = true;
 bitArray[1] = false;
 bitArray[2] = false;
 bitArray[3] = true;
  
 // Retreive
 if (true == bitArray[1])
 {
     //...
 }

List. List это коллекция, позволяющая хранить любой тип данных, доступ к которым осуществляется по индексу. В примере ниже используется строка, но вы можете заменить строку на любой тип по своему усмотрению.

 List<string> test = new List<string>();
  
 // Add data
 test.Add("Hello");
 test.Add("There");
 test.Add("Goodbye");
  
 // Retrieve "Goodbye"
 string data = test[2];

Stack. Stack всегда работает по принципу "Последним пришел, первым вышел" (LIFO). Таким образом, данные, которые были добавлены к стеку методом Push(), будут получены первыми вызовом метода Pop(). Как и в случаи с классом List, в Stack вы можете хранить любые типы объектов. На примере ниже мы используем тип integer.

 Stack<int> stack = new Stack<int>();
  
 stack.Push(5);
 stack.Push(3);
 stack.Push(4);
  
 // Pop the 4 off the stack.
 int test = stack.Pop();

Queue. Этот класс поддерживает прицип "Первым пришел, первым вышел" (FIFO). Объекты добавляются методом Enqueue() и извлекаются с удалением методом Dequeue(). На примере ниже, мы устанавливаем в очередь три строки. Затем, вызовом Dequeue(), мы извлекаем первую строку со значением "First". Если бы мы предприняли еще один вызов Dequeue(), мы извлекли бы строку со значением "Second".

 // Add data
 Queue<string> queue = new Queue<string>();
 queue.Enqueue("First");
 queue.Enqueue("Second");
 queue.Enqueue("Third");
  
 // Retrieve the string "First"
 string test = queue.Dequeue();

LinkedList. LinkedList содержит набор связанных элементов. При этом у вас есть прямой доступ к "голове" и "хвосту" списка, и вы можете двигаться по списку от начала до конца. На примере ниже, мы задекларировали класс Node, который мы будем хранить в LinkedList.

 class Node
 {
     private int _ID;
  
     public Node(int ID)
     {
         _ID = ID;
     }
  
     public int ID
     {
         get { return _ID; }
         set { ID = value; }
     }
  
 };
  
 public partial class Page : UserControl
 {
     public Page()
     {
         InitializeComponent();
  
  
         // Add Nodes
         LinkedList<Node> _list = new LinkedList<Node>();            
         LinkedListNode<Node> headNode = _list.AddFirst(new Node(432));
         LinkedListNode<Node> lastNode = _list.AddAfter(headNode, new Node(200));
         lastNode = _list.AddAfter(lastNode, new Node(451));
         lastNode = _list.AddAfter(lastNode, new Node(14));
         lastNode = _list.AddAfter(lastNode, new Node(55));
  
         // Retrieve Nodes
         foreach (Node node in _list)
         {
             int ID = node.ID;
         }
         
     }
 }

Dictionary. Этот класс хранит данные с использованием пары ключ/значение, где ключ используется для идентификации сохраняемых и извлечения сохраненных данных.

 Dictionary<int, string> myData = new Dictionary<int, string>();
  
 // Store Data
 myData.Add(4324, "Cat");
 myData.Add(331, "Dog");
 myData.Add(442, "Lion");
 myData.Add(3444, "Tiger");
  
 // Retrieve "Lion" by passing the key 3444
 string animal = myData[442];

Выдержка из блога Майка Сноуссылка на оригинал

Авторские права Майка Сноу. Переведено с разрешения Майка Сноу.

Technorati Tags: Silverlight