Esempio n. 1
0
        static void Main(string[] args)
        {
            int aInt = 124;

            GenericMethod.Show <int>(aInt);


            {
                People p = new People()
                {
                    Id   = 1,
                    Name = "Jason"
                };

                Kiwi kw = new Kiwi()
                {
                    Id   = 2,
                    Name = "kiwi"
                };

                Chinese c = new Chinese(3)
                {
                    Id   = 3,
                    Name = "Hao"
                };

                Japanese j = new Japanese()
                {
                    Id   = 4,
                    Name = "Tokyo"
                };

                //Constraint.Show<People>(p);
                Constraint.Show <Chinese>(c);
            }


            Console.Read();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            try
            {
                //var list = new List<int>() { 1, 2, 3, 4 }
                //.Select(i => new
                //{
                //    id = i,
                //    name = "Test" + i
                //});
                //foreach (var item in list)
                //{
                //    Console.WriteLine(item.id);
                //    Console.WriteLine(item.name);
                //}

                //List<int>


                Console.WriteLine("欢迎来到.net高级班vip课程,今天是Eleven老师给大家带来的泛型Generic");
                int      iValue  = 123;
                string   sValue  = "456";
                DateTime dtValue = DateTime.Now;
                object   oValue  = new object();



                Console.WriteLine(typeof(List <int>));
                Console.WriteLine(typeof(Dictionary <int, string>));
                Console.WriteLine("**************************");
                CommonMethod.ShowInt(iValue);
                //CommonMethod.ShowInt(sValue);
                CommonMethod.ShowString(sValue);
                CommonMethod.ShowDateTime(dtValue);

                Console.WriteLine("**************************");
                CommonMethod.ShowObject(oValue);

                CommonMethod.ShowObject(iValue);
                CommonMethod.ShowObject(sValue);
                CommonMethod.ShowObject(dtValue);

                Console.WriteLine("**************************");
                GenericMethod.Show <object>(oValue);
                GenericMethod.Show <int>(iValue);
                GenericMethod.Show(iValue);//类型参数可以省略,由编译器推断出来
                //GenericMethod.Show<int>(sValue);//类型参数和参数必须匹配
                GenericMethod.Show <string>(sValue);
                GenericMethod.Show <DateTime>(dtValue);

                Console.WriteLine("**************************");
                People people = new People()
                {
                    Id   = 11,
                    Name = "山冈"
                };
                Japanese japanese = new Japanese()
                {
                    Id   = 112,
                    Name = "鬼子"
                };

                Chinese chinese = new Chinese()
                {
                    Id   = 123,
                    Name = "口口"
                };
                Hubei hubei = new Hubei()
                {
                    Id   = 123,
                    Name = "pig猪"
                };


                //Constraint.Show<People>(people);
                Constraint.Show <Chinese>(chinese);
                Constraint.Show <Hubei>(hubei);

                Constraint.ShowPeople(people);
                Constraint.ShowPeople(chinese);
                Constraint.ShowPeople(hubei);


                //Constraint.ShowInterface<People>(people);//没有实现ISports接口
                Constraint.ShowInterface <Chinese>(chinese);
                Constraint.ShowInterface <Hubei>(hubei);

                Constraint.ShowInterface <Japanese>(japanese);

                //Constraint.Show<Japanese>(japanese);//虽然Japanese有ID和Name,但是因为不是People,所以不能调用

                //Constraint.Show<int>(iValue);//约束后,只能按约束传递

                #region Monitor
                {
                    long commonTime  = 0;
                    long objectTime  = 0;
                    long genericTime = 0;
                    {
                        Stopwatch stopwatch = new Stopwatch();
                        stopwatch.Start();

                        for (int i = 0; i < 1000000000; i++)
                        {
                            ShowCommon(iValue);
                        }
                        stopwatch.Stop();
                        commonTime = stopwatch.ElapsedMilliseconds;
                    }
                    {
                        Stopwatch stopwatch = new Stopwatch();
                        stopwatch.Start();

                        for (int i = 0; i < 1000000000; i++)
                        {
                            ShowObject(iValue);
                        }
                        stopwatch.Stop();
                        objectTime = stopwatch.ElapsedMilliseconds;
                    }
                    {
                        Stopwatch stopwatch = new Stopwatch();
                        stopwatch.Start();

                        for (int i = 0; i < 1000000000; i++)
                        {
                            ShowGeneric <int>(iValue);
                        }
                        stopwatch.Stop();
                        genericTime = stopwatch.ElapsedMilliseconds;
                    }
                    Console.WriteLine("commonTime = {0} objectTime = {1} genericTime = {2}", commonTime, objectTime, genericTime);
                }



                #endregion
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            try
            {
                {
                    Console.WriteLine("*****************Old Way***********");
                    int      i  = 123;
                    string   s  = "456";
                    DateTime dt = DateTime.Now;
                    object   o  = "sorry";
                    {
                        Console.WriteLine("************************");
                        CommonMethod.ShowInt(i);
                        CommonMethod.ShowString(s);
                        CommonMethod.ShowDateTime(dt);
                        CommonMethod.ShowObject(o);
                        CommonMethod.ShowObject(i);
                        CommonMethod.ShowObject(s);
                    }


                    {
                        Console.WriteLine("*************Generic**************");
                        GenericMethod.Show(i);          // <> 能省略,自动推算
                        GenericMethod.Show <string>(s); //需要指定参数类型
                    }

                    {
                        Console.WriteLine("*************Monitor**************");
                        // 性能 common ~ Generic > object
                        Monitor.Show();

                        GenericCacheTest.Show();
                    }
                    {
                        Console.WriteLine("********************Constraint*************");
                        {
                            People people = new People()
                            {
                                Id   = 123,
                                Name = "people"
                            };

                            Chinese chinese = new Chinese()
                            {
                                Id   = 234,
                                Name = "Ivan"
                            };

                            Hubei hubei = new Hubei()
                            {
                                Id   = 345,
                                Name = "Hubei"
                            };

                            Japanese japanese = new Japanese()
                            {
                                Id   = 567,
                                Name = "Cang"
                            };

                            CommonMethod.ShowObject(people);
                            CommonMethod.ShowObject(chinese);
                            CommonMethod.ShowObject(hubei);
                            CommonMethod.ShowObject(japanese);

                            GenericMethod.Show <People>(people);
                            GenericMethod.Show <Chinese>(chinese);
                            GenericMethod.Show <Hubei>(hubei);
                            GenericMethod.Show <Japanese>(japanese);
                            {
                                Constraint.Show <People>(people);
                                Constraint.Show <Chinese>(chinese);
                                Constraint.Show <Hubei>(hubei);
                                //  Constraint.Show<Japanese>(japanese); Error because Japanese not a child class of People
                            }
                        }

                        {
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.Read();
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Console.WriteLine(".net framework 1.0的时候");
            int      intValue    = 1;
            string   stringValue = "1";
            DateTime dateValue   = DateTime.Now;

            CommonMethod.ShowInt(intValue);
            CommonMethod.ShowString(stringValue);
            CommonMethod.ShowDateTime(dateValue);
            Console.WriteLine("使用object简化代码");
            CommonMethod.ShowObj(intValue);
            CommonMethod.ShowObj(stringValue);
            CommonMethod.ShowObj(dateValue);

            Console.WriteLine(".net framework 2.0的时候,引入泛型");
            GenericMethod.Show(intValue);
            GenericMethod.Show(stringValue);
            GenericMethod.Show(dateValue);

            Console.WriteLine("打印泛型类型,会看到编译器,生成占位符");
            Console.WriteLine(typeof(List <>));
            Console.WriteLine(typeof(Dictionary <,>));

            Console.WriteLine("比较性能");
            Monitor.Show();

            // 泛型类

            // 泛型接口

            // 泛型约束
            var people = new People()
            {
                Id   = 1,
                Name = "人类"
            };

            var chinese = new Chinese()
            {
                Id   = 2,
                Name = "中国人"
            };
            var japanese = new Japanese()
            {
                Id   = 3,
                Name = "日本人"
            };

            CommonMethod.ShowObj(people);
            CommonMethod.ShowObj(chinese);
            CommonMethod.ShowObj(japanese);

            GenericMethod.Show(people);
            GenericMethod.Show(chinese);
            GenericMethod.Show(japanese);

            // 上面方法只是打印了对象的类型
            // 如果想打印 对象里的内容 输出Id,Name的值

            Constraint.ShowBase(people);
            Constraint.Show(chinese);
            //Constraint.Show(japanese); 由于japannese 不是继承自 People 类所以这里不能使用

            // 为啥不直接使用基类 方法

            // 泛型类缓存
            GenericCacheTest.Show();
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("欢迎来到.net高级班vip课程,今天是Eleven老师给大家带来的泛型Generic");
                //List<int>
                //List<string>

                //Console.WriteLine(typeof(List<>));//`1
                //Console.WriteLine(typeof(Dictionary<,>));//`2
                //var varValue = 789;
                //object objectValue = 789;
                //int iValue = 123;
                //dynamic dValue = 789;

                ////int result = varValue + iValue;
                ////int result2 = objectValue + iValue;
                //int result3 = dValue + iValue;
                //string sValue = "456";
                //DateTime dtValue = DateTime.Now;
                //object oValue = "MrSorry";

                //Console.WriteLine("**************************");
                //CommonMethod.ShowInt(iValue);
                //CommonMethod.ShowString(sValue);
                //CommonMethod.ShowDateTime(dtValue);
                //CommonMethod.ShowObject(oValue);

                //CommonMethod.ShowObject(iValue);
                //CommonMethod.ShowObject(sValue);
                //CommonMethod.ShowObject(dtValue);

                //Console.WriteLine("************Generic**************");
                //GenericMethod.Show<int>(iValue);//需要指定类型参数
                ////GenericMethod.Show<string>(iValue);//必须吻合
                //GenericMethod.Show(iValue);//能省略,自动推算
                //GenericMethod.Show<string>(sValue);
                //GenericMethod.Show<DateTime>(dtValue);
                //GenericMethod.Show<object>(oValue);


                ////GenericClass<int> genericClass = new GenericClass<int>()
                ////{
                ////    _T = 123
                ////};
                ////GenericClass<string> genericClassString = new GenericClass<string>()
                ////{
                ////    _T = "123"
                ////};

                //Console.WriteLine("************Monitor**************");
                //Monitor.Show();
                ////generic≈≈common>object
                ////泛型:又叫马儿跑,又叫马儿不吃草! 因为框架的升级

                GenericCacheTest.Show();

                Console.WriteLine("************Constraint*****************");
                {
                    People people = new People()
                    {
                        Id   = 123,
                        Name = "走自己的路"
                    };
                    Chinese chinese = new Chinese()
                    {
                        Id   = 234,
                        Name = "晴天"
                    };
                    Hubei hubei = new Hubei(123)
                    {
                        Id   = 345,
                        Name = "流年"
                    };
                    Japanese japanese = new Japanese()
                    {
                        Id   = 7654,
                        Name = "苍老师"//寒露的建议
                    };

                    //CommonMethod.ShowObject(people);
                    //CommonMethod.ShowObject(chinese);
                    //CommonMethod.ShowObject(hubei);
                    //CommonMethod.ShowObject(japanese);

                    //Constraint.Show<People>(people);
                    Constraint.Show <Chinese>(chinese);
                    //Constraint.Show<Hubei>(hubei);
                    //Constraint.Show<Japanese>(japanese);//
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            try
            {
                // 欢迎大家来到.Net 高级班的Vip课程,我是Richard老师!
                // 今天是第十三期的第一次课:泛型
                //什么是泛型?
                //宽泛的,不确定的,就是不确定的类型
                //List<string> intlist = new List<string>();

                // var i = 1234; // 语法糖


                Console.WriteLine(typeof(List <>));
                Console.WriteLine(typeof(Dictionary <,>));

                Console.WriteLine("欢迎来到.net高级班vip课程,今天是Richard老师给大家带来的泛型Generic");
                int      iValue  = 123;
                string   sValue  = "456";
                DateTime dtValue = DateTime.Now;
                object   oValue  = "789";

                Console.WriteLine("***********************Common***********************");
                CommonMethod.ShowInt(iValue);
                CommonMethod.ShowString(sValue);
                CommonMethod.ShowDateTime(dtValue);

                Console.WriteLine("***********************Object***********************");
                CommonMethod.ShowObject(oValue);
                CommonMethod.ShowObject(iValue);
                CommonMethod.ShowObject(sValue);
                CommonMethod.ShowObject(dtValue);

                Console.WriteLine("***********************Generic***********************");
                // 泛型只有:泛型方法、泛型类、泛型接口、泛型委托
                //泛型方法调用的时候,需要加上<>,而且需要指定具体的类型、指定的类型和传入的参数类型保持一致。

                CommonMethod.Show(iValue);                                      //如果类型参数,可以通过参数类型推导出来,那么就可以省略
                                           /* CommonMethod.Show<int>(sValue);*/ // 因为类型错了
                CommonMethod.Show(sValue);
                CommonMethod.Show <DateTime>(dtValue);
                CommonMethod.Show <object>(oValue);

                //Monitor.Show();

                Console.WriteLine("***********************GenericCache***********************");
                //GenericCacheTest.Show();

                //泛型方法  一个方法满足多个类型的需求
                //泛型类   就是一个类 满足多个类型的需求
                //泛型接口 就是一个接口 满足多个多个类型的需求
                //泛型委托 就是一个委托 满足多个多个类型的需求

                //GenericConstraint.ShowObject(iValue);
                //GenericConstraint.ShowObject(sValue);
                //GenericConstraint.ShowObject(dtValue);
                //GenericConstraint.ShowObject(oValue);

                Console.WriteLine("***********************GenericConstraint***********************");
                // 泛型约束的好处:
                // 加了约束以后可以获取更多的功能;
                // 程序在调用的时候可以避免错误调用
                People people = new People()
                {
                    Id   = 123,
                    Name = "Richard"
                };

                Chinese chinese = new Chinese()
                {
                    Id   = 234,
                    Name = "习大大"
                };
                Hubei hubei = new Hubei()
                {
                    Id   = 345,
                    Name = "王市长"
                };
                Japanese japanese = new Japanese()
                {
                    Id   = 678,
                    Name = "福原爱"
                };

                // Object 方法因为可以出入任何类型,没有限制,如果传入的类型不匹配,就会发生异常(类型安全问题)
                //GenericConstraint.ShowObject(people);
                //GenericConstraint.ShowObject(chinese);
                //GenericConstraint.ShowObject(hubei);
                //GenericConstraint.ShowObject(japanese);

                //GenericConstraint.Show(people);
                //GenericConstraint.Show(chinese);
                //GenericConstraint.Show(hubei);
                //GenericConstraint.Show(japanese);//


                // GenericConstraint.GenericShow(123);

                GenericConstraint.GenericShow(people);
                GenericConstraint.GenericShow(chinese);
                GenericConstraint.GenericShow(hubei);
                GenericConstraint.GenericShow(japanese);//
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }