Csharp/CSharp Tutorial/Generic/Define Generic Collection
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>