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(); }
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(); }
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(); }