Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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");
        }