static void Main(string[] args) { /* 没有添加构造方法之前 * * * // 初始化dog类 * Dog aDog = new Dog(); * aDog.Name = "旺财"; * aDog.PrintName(); * * //隐藏方法测试 * Cat aCat = new Cat(); * aCat.Name = "Alis"; * aCat.PrintName();// 打印子类cat中的PrintName方法 * * Pet aCat01 = new Cat(); * aCat01.Name = "Alis"; * aCat01.PrintName();// 打印父类pet中的PrintName方法 * //Tip:狗和猫都继承Pet类,如果没有使用多态,子类初始化的时候引用是父类,那就会调用父类的方法 * * * //虚方法和多态测试-----目的:子类初始化的时候引用父类,但是调用的还是子类自己的方法 * Pet aDog01 = new Dog(); * aDog01.Speak("狗说你好!");// 打印子类Dog中的Speak方法 * * Pet aCat02 = new Cat(); * aCat02.Speak("猫咪说你好!");// 打印子类Cat中的Speak方法 */ /* * 添加构造方法之后,可以直接一个数组来做上面的事 */ Pet[] pets = new Pet[] { new Dog("Jick"), new Cat("Tom") }; for (int i = 0; i < pets.Length; i++) { pets[i].Speak("你好"); /* 打印结果 * 父类中---狗类---说话的方法---你好 * 父类中---猫类---说话的方法---你好 */ pets[i].PrintName(); // 没有重写PrintName方法,所以打印的是父类中的PrintName方法 } Cat cat01 = new Cat("Tom02"); ICatchMice catchMice = (ICatchMice)cat01;// 强制转换 cat01.CatchMice(); catchMice.CatchMice(); // 调用静态函数 - 直接用类名调用 Dog.ShowDogNum(); // 调用静态类 Dog类本身没有这个方法,是使用静态类来添加的 Dog dog = new Dog("huahua"); dog.HowToFeed(); Dog dog02 = new Dog("wangcai"); dog02.Speak("wangwang"); // 开始转换 Cat cat02 = dog02; cat02.PrintName(); // 打印出名字还是叫wangcai,只是现在是一只猫 Dog dog03 = (Dog)cat02; // 显示转换 ,要添加转换类型 dog03.PrintName(); // 测试重载运算符 { Pet[] pets01 = new Pet[] { new Dog("Jick012"), new Cat("Tom023") }; for (int i = 0; i < pets01.Length; i++) { pets01[i]++; pets01[i].ShowAge(); } } // 泛型测试 var dogCage = new Cage <Dog>(1); dogCage.Putin(new Dog("A")); dogCage.Putin(new Dog("B")); var dogTemp = dogCage.Takeout(); dogTemp.PrintName(); // 调用泛型方法 var dog04 = new Dog("C"); dog04.IsHappy <int>(3); // 调用有约束的泛型方法 - 只能传入class var dog05 = new Dog("D"); dog05.IsHappy01 <Person>(new Person()); // 集合 List <Dog> list = new List <Dog>(); list.Add(new Dog("S")); list.Add(new Dog("SS")); list.Add(new Dog("SSS")); for (int i = 0; i < list.Count; i++) { list[i].PrintName(); } Dictionary <string, Dog> dic = new Dictionary <string, Dog>(); dic.Add("One", new Dog("B")); dic.Add("Two", new Dog("BB")); dic.Add("Three", new Dog("BBB")); dic["Two"].PrintName(); // 栈 - 先进后出 ---- 集合 Stack <Pet> stack = new Stack <Pet>(); stack.Push(new Dog("A")); stack.Push(new Cat("B")); stack.Peek().PrintName();// 打印最顶部的数据 stack.Pop(); stack.Peek().PrintName(); // 队列 先进先出 Queue <Pet> queue = new Queue <Pet>(); queue.Enqueue(new Dog("Aaaaaaaa")); queue.Enqueue(new Dog("Bbbbbbbb")); queue.Enqueue(new Dog("Cccccccc")); Pet pet = null; pet = queue.Dequeue(); // 出去 pet.PrintName(); pet = queue.Dequeue(); // 出去 pet.PrintName(); pet = queue.Dequeue(); // 出去 pet.PrintName(); // 委托 ActCute del = null; Cat cat00 = new Cat("dasda"); del = cat00.CeShiDeleage;// 注意 不需要打括号 // Lambda表达式 del += () => { Console.WriteLine("我是一个Lambda表达式定义的方法,我什么都没做"); }; del(); // 模拟客户 Client c1 = new Client(); Client c2 = new Client(); // 注册 //Dog.NewDog02 += c1.WantADog; //Dog.NewDog02 += c2.WantADog; Dog dog002 = new Dog("新来了一只狗"); Console.Read(); }
static void Main(string[] args) { ActCute del = null; Dog dog = new Dog("A"); Cat cat = new Cat("B"); del = dog.WagTail; del += cat.InnocentLook; del += () => { Console.WriteLine("do nothing"); }; del(); //Dictionary<string, Dog > dic = new Dictionary<string, Dog>(); //dic.Add("A", new Dog("A")); //dic.Add("B", new Dog("BC")); //dic.Add("C", new Dog("C")); //dic["A"].PrintName(); //Stack<Pet> stack = new Stack<Pet>(); //stack.Push(new Dog("A")); //stack.Push(new Cat("B")); //stack.Peek().PrintName(); //stack.Pop(); //stack.Peek().PrintName(); //Queue<Pet> queue = new Queue<Pet>(); //queue.Enqueue(new Dog("A")); //queue.Enqueue(new Dog("B")); //queue.Enqueue(new Dog("C")); //queue.Dequeue().PrintName(); //queue.Dequeue().PrintName(); //queue.Dequeue().PrintName(); //List<Dog> list = new List<Dog>(); //list.Add(new Dog("A")); //list.Add(new Dog("B")); //list.Add(new Dog("C")); //list.RemoveAt(1); //for (int i = 0;i< list.Count;++i) //{ // list[i].PrintName(); //} //Labrador dog = new Labrador("A"); //dog.Act(new SitDogCmd()); //dog.Act(new SpeakDogCmd()); //var dog = new Dog("A"); //dog.IsHappy<Cat>(new Cat("Tom")); //dog.IsHappy<int>( 3); //var dogCage = new Cage<Dog>(1); //dogCage.Putin(new Dog("A")); //dogCage.Putin(new Dog("B")); //var dog = dogCage.TakeOut(); //dog.PrintName(); //Dog dog = new Dog("Jack"); //dog.Speak(); //Cat cat = dog; //cat.Speak(); //cat.PrintName(); //Dog dog2=(Dog)cat; //dog2.Speak(); //Pet[] pets = new Pet[] { new Dog("Jack"), new Cat("Tom"), new Dog("Cherry") }; //for (int i=0;i<pets.Length;++i) //{ // pets[i]++; // pets[i].ShowAge(); //} //Pet[] pets = new Pet[] {new Dog("Jack"), new Cat("Tom") ,new Dog("Cherry")}; //for(int i=0;i<pets.Length;i++) //{ // pets[i].Speak(); //} //Cat c = new Cat("Tom2"); //IClimbTree climb = (IClimbTree)c; //c.ClimbTree(); //climb.ClimbTree(); //ICatchMice catchM = (ICatchMice)c; //c.CatchMice(); //catchM.CatchMice(); //Dog.ShowNum(); //Dog dog = new Dog("Tommy"); //dog.HowToFeedDog(); //{ // int i = 3; // object oi = i; // Console.WriteLine("i="+i+"oi="+oi.ToString()); // oi = 10; // i = 7; // Console.WriteLine("i=" + i + "oi=" + oi.ToString()); // int j = (int)oi; // Console.WriteLine("j="+j); //} //Pet dog = new Dog(); //dog.Name ="Jack"; //dog.PrintName(); //dog.Speak(); //Pet cat = new Cat(); //cat.Name = "Tom"; //cat.PrintName(); //cat.Speak(); }
delegate void ActCute();//声明一个委托的类型 static void Main(string[] args) { Child xiaoMing = new Child(); //实例化Child类的对象 xiaoMing.Name = "maxiaoming"; //为字段赋值 //xiaoMing.Sex=""; xiaoMing.Age = 6; xiaoMing.Age = 5; xiaoMing.Height = 120; Console.WriteLine("My name is " + xiaoMing.Name + ". I am " + xiaoMing.Sex + ". I am " + xiaoMing.Age + " years old."); xiaoMing.PlayBall(); //调用方法 xiaoMing.EatSugar("榴莲糖"); //实参 sugar="榴莲糖" xiaoMing.EatSugar(4); xiaoMing.EatSugar("牛奶糖", 2); xiaoMing.EatSugarage(5); int sum; sum = xiaoMing.Add(2, 3); Console.WriteLine("两数之和是:" + sum); Console.WriteLine("我的名字是{0}-根据无参构造方法", xiaoMing.Name); Child child = new Child("田翠华", Gender.女, 5);//调用构造方法 Console.WriteLine("我的名字是" + child.Name + ",我的性别是" + child.Sex + ",我的年龄是" + child.Age); //用有参数构造方法初始化 Child child1 = new Child("小白", Gender.男, 4); //用无参数构造方法初始化 Child child2 = new Child(); child2.Name = "胡晓梅"; child2.Age = 4; //用对象初始化器初始化对象 Child child3 = new Child() { Name = "周润发", Age = 5 }; Console.WriteLine("我叫{0}, 今年{1}岁了", child3.Name, child3.Age); Console.WriteLine("------------结构----------------"); //Dog dog = new Dog(); dog.Name = "小白"; Console.WriteLine("The Name of " + dog.Name); dog.Sing(); Console.WriteLine("------------------------"); Child c1 = new Child("刘有才", Gender.男, 3); Growth(c1); //按引用传参,方法修改形参,通常实参也会被修改 //Console.WriteLine("我现在{0}岁了!", c1.Age); Growth(c1.Age); //按值传参,方法修改形参,实参不会被修改 Console.WriteLine("我现在{0}岁了!", c1.Age); int age = 3;//年龄 Growth(ref age); Console.WriteLine("我现在{0}岁了!", age); int age_out = 7; int ly, ny;//去年的年龄,明年的年龄 Growth(age_out, out ly, out ny); Console.WriteLine("我明年{0}岁,去年{1}岁!", ny, ly); Console.WriteLine("-------------父类-----------"); Pet snake = new Snake(); //Pet snake = new Snake();//直接调用父类 snake.name = "蛇"; snake.printName(); snake.Speak(); /*snake1.printName(); * snake1.Speak();*/ Console.WriteLine("-------------泛型方法-----------"); var bird = new Bird("xiaoniao"); bird.IsHappy <Bird>(new Bird("Tom"));//int只是例子,可以是任意类型 Console.WriteLine("-------------List集合-----------"); List <Dog> list = new List <Dog>(); list.Add(new Dog("A")); list.Add(new Dog("B")); list.Add(new Dog("C")); list.RemoveAt(0); for (int i = 0; i < list.Count; i++) { list[i].Sing(); } Console.WriteLine("-------------Dictionary集合-----------"); Dictionary <string, Dog> dic = new Dictionary <string, Dog>(); dic.Add("A", new Dog("A")); dic.Add("B", new Dog("B")); dic.Add("C", new Dog("C")); dic["A"].Sing(); Console.WriteLine("-------------栈Stack集合-----------"); Stack <Pet> stack = new Stack <Pet>(); stack.Push(new Bird("D")); stack.Push(new Fish("E")); stack.Push(new Bird("F")); stack.Peek().printName(); //显示栈顶元素 stack.Pop(); //出栈 stack.Peek().printName(); Console.WriteLine("-------------队列Queue集合-----------"); Queue <Pet> queue = new Queue <Pet>(); queue.Enqueue(new Bird("G")); queue.Enqueue(new Bird("H")); queue.Enqueue(new Fish("I")); Pet pet = null; pet = queue.Dequeue(); pet.printName(); pet = queue.Dequeue(); pet.printName(); pet = queue.Dequeue(); pet.printName(); Console.WriteLine("-------------委托-----------"); ActCute del = null; Fish fish = new Fish("J"); Bird bird_d = new Bird("K"); del = fish.WagTail;//没有括号,只是持有方法 del += bird.innocentLook; del += () => { Console.WriteLine("do nothing"); }; del(); Console.WriteLine("-------------事件-----------");//实际上也是观察者模式设置的过程 Client client_1 = new Client(); Client client_2 = new Client(); Bird.NewBird += client_1.WantADog; //注册事件 Bird.NewBird += client_2.WantADog; //注册事件 Bird bird_event = new Bird("event_bird"); }