Csharp/CSharp Tutorial/Generic/Define Generic Collection

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Create generic Bag collection class based on generic List

<source lang="csharp">using System; using System.Collections.Generic; public class Bag<T> {

   private List<T> items = new List<T>();
   public void Add(T item)
   {
       items.Add(item);
   }
   public T Remove()
   {
       T item = default(T);
       if (items.Count != 0)
       {
           item = items[0];
           items.RemoveAt(0);
       }
       return item;
   }
   public T[] RemoveAll()
   {
       T[] i = items.ToArray();
       items.Clear();
       return i;
   }

} public class MainClass {

   public static void Main(string[] args)
   {
       Bag<string> bag = new Bag<string>();
       bag.Add("D");
       bag.Add("B");
       bag.Add("G");
       bag.Add("M");
       bag.Add("N");
       bag.Add("I");
       Console.WriteLine("Item 1 = {0}", bag.Remove());
       Console.WriteLine("Item 2 = {0}", bag.Remove());
       Console.WriteLine("Item 3 = {0}", bag.Remove());
       Console.WriteLine("Item 4 = {0}", bag.Remove());
       string[] s = bag.RemoveAll();
   }

}</source>

Item 1 = D
Item 2 = B
Item 3 = G
Item 4 = M

Typeof Operator for generic collection

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel;

   class MainClass
   {
       static internal void DemonstrateTypeof<X>()
       {
           Console.WriteLine(typeof(X));
           Console.WriteLine(typeof(List<X>));
           Console.WriteLine(typeof(Dictionary<string, X>));
           Console.WriteLine(typeof(List<long>));
           Console.WriteLine(typeof(Dictionary<long, Guid>));
       }
       static void Main()
       {
           DemonstrateTypeof<int>();
       }
   }</source>