1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using System.Collections; 8 9 namespace day01 10 { 11 class Class27 12 { 13 static void Main(string[] args) 14 { 15 Cat catDictionary = new Cat(); 16 catDictionary.Add("1001", new Cat("zhangsan")); 17 catDictionary.Add("1002", new Cat("lisi")); 18 catDictionary.Add("1003", new Cat("wangwu")); 19 20 foreach(DictionaryEntry entry in catDictionary) 21 { 22 Console.WriteLine("{0} {1}", entry.Value.ToString(), ((Animal)entry.Value).Name); 23 } 24 25 Console.WriteLine(catDictionary["1003"].ToString()); 26 Console.WriteLine(catDictionary["1003"].Name); 27 Console.ReadKey(); 28 } 29 } 30 public abstract class Animal : DictionaryBase 31 { 32 protected string name; 33 public string Name { get; set; } 34 public Animal() 35 { 36 Name = "default"; 37 } 38 public Animal(string name) 39 { 40 Name = name; 41 } 42 public abstract void Run(); 43 public abstract void Sleep(); 44 public override string ToString() 45 { 46 return "name: " + Name; 47 } 48 public void Add(string newId,Animal animal) 49 { 50 Dictionary.Add(newId, animal); 51 } 52 public void Remove(string newId) 53 { 54 Dictionary.Remove(newId); 55 } 56 public Animal this[string newId] 57 { 58 get 59 { 60 return (Animal)Dictionary[newId]; 61 } 62 set 63 { 64 Dictionary[newId] = value; 65 } 66 } 67 } 68 public class Cat : Animal 69 { 70 //這個構造器該怎么理解? 71 public Cat() 72 { 73 74 } 75 public Cat(string name) : base(name) 76 { 77 78 } 79 public override void Run() 80 { 81 Console.WriteLine("animal name: {0} is running", Name); 82 } 83 84 public override void Sleep() 85 { 86 Console.WriteLine("animal name: {0} is sleeping", Name); 87 } 88 } 89 }