标签:举例 HERE 运行时 console 类型 struct 提升 父类 设计
当类性为object的时候:
/// <summary> /// 打印个object值 /// 1 object类型是一切类型的父类 /// 2 通过继承,子类拥有父类的一切属性和行为;任何父类出现的地方,都可以用子类来代替/// /// object引用类型 加入传个值类型int 会有装箱拆箱 性能损失
/// 装箱拆箱: 装箱==>栈--堆 值类型在栈内存中,引用类型在堆内存中
/// 拆箱: ==> 堆-->栈
/// 类型不安全 /// </summary> /// <param name="oParameter"></param> public static void ShowObject(object oParameter) { Console.WriteLine("This is {0},parameter={1},type={2}", typeof(CommonMethod), oParameter.GetType().Name, oParameter); //Console.WriteLine($"{((People)oParameter).Id}_{((People)oParameter).Name}"); }
泛型时:
1 /// <summary> 2 /// 2.0推出的新语法 3 /// 泛型方法解决用一个方法,满足不同参数类型;做相同的事儿 4 /// 没有写死参数类型,调用的时候才指定的类型 5 /// 单身狗:小西瓜 6 /// 章子怡 范冰冰 凤姐 7 /// 延迟声明:把参数类型的声明推迟到调用 8 /// 9 /// 推迟一切可以推迟的~~ 延迟思想 ===》架构设计时思想===>提升性能 10 /// 举例: 网页加载数据在滚动到内容时菜加载数据等 11 /// 12 /// 不是语法糖,而是2.0由框架升级提供的功能 13 /// 需要编译器支持+JIT支持 14 /// </summary> 15 /// <typeparam name="T">T/S 不要用关键字 也不要跟别的类型冲突 </typeparam> 16 /// <param name="tParameter"></param> 17 public static void Show<T>(T tParameter) 18 { 19 Console.WriteLine("This is {0},parameter={1},type={2}", 20 typeof(GenericMethod), tParameter.GetType().Name, tParameter.ToString()); 21 }
dynamic: 动态类型:运行时不知道它是什么类型
var:语法糖,自动识别类型
/// <summary>
/// 一个类来满足不同的具体类型,做相同的事儿
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="S"></typeparam>
/// <typeparam name="X"></typeparam>
/// <typeparam name="Eleven"></typeparam>
/// <typeparam name="老K"></typeparam>
public class GenericClass<T>
//, S, X, Eleven, 老K>
//where T : People
//where S : Chinese
//where Eleven : Hubei
{
public T _T;
}
/// <summary>
/// 一个接口来满足不同的具体类型的接口,做相同的事儿
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IGenericInterface<T> //where T : People
{
T GetT(T t);//泛型类型的返回值
}
public class CommonClass
//: GenericClass<int>//必须指定
: IGenericInterface<int>//必须指定
{
public int GetT(int t)
{
throw new NotImplementedException();
}
}
public class GenericClassChild<Eleven>
//: GenericClass<Eleven>
: GenericClass<int>, IGenericInterface<Eleven>
{
public Eleven GetT(Eleven t)
{
throw new NotImplementedException();
}
}
public delegate void SayHi<T>(T t);//泛型委托
public class Constraint { /// <summary> /// 泛型:不同的参数类型都能进来;任何类型都能过来,你知道我是谁? /// 没有约束,也就没有自由 /// 泛型约束--基类约束(不能是sealed): /// 1 可以使用基类的一切属性方法---权利 /// 2 强制保证T一定是People或者People的子类---义务 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="tParameter"></param> public static void Show<T>(T tParameter) where T : People, ISports, IWork, new() { //Console.WriteLine("This is {0},parameter={1},type={2}", // typeof(GenericMethod), tParameter.GetType().Name, tParameter.ToString()); Console.WriteLine($"{tParameter.Id}_{tParameter.Name}"); tParameter.Hi(); //tParameter.Majiang(); tParameter.Pingpang(); tParameter.Work(); } public static void ShowBase(People tParameter)//因为约束可以叠加 更灵活 { Console.WriteLine($"{tParameter.Id}_{tParameter.Name}"); tParameter.Hi(); } //为啥不直接用基类 //int? public static T Get<T>(T t) //where T : ISports//接口约束 //where T : class//引用类型约束 //where T : struct//值类型约束 where T : new()//无参数构造函数约束 { //t.Pingpang(); //T tNew = null; //T tNew = default(T);//会根据T的不同 赋予默认值 T tNew = new T(); return t; } }
public interface ISports { void Pingpang(); } public interface IWork { void Work(); } public class People { public int Id { get; set; } public string Name { get; set; } public void Hi() { Console.WriteLine("Hi"); } } public class Chinese : People, ISports, IWork { public void Tradition() { Console.WriteLine("仁义礼智信,温良恭俭让"); } public void SayHi() { Console.WriteLine("吃了么?"); } public void Pingpang() { Console.WriteLine("打乒乓球..."); } public void Work() { throw new NotImplementedException(); } } public class Hubei : Chinese { public Hubei(int version) { } public string Changjiang { get; set; } public void Majiang() { Console.WriteLine("打麻将啦。。"); } } public class Japanese : ISports { public int Id { get; set; } public string Name { get; set; } public void Hi() { Console.WriteLine("Hi"); } public void Pingpang() { Console.WriteLine("打乒乓球..."); } }
标签:举例 HERE 运行时 console 类型 struct 提升 父类 设计
原文地址:https://www.cnblogs.com/wxhao/p/14249242.html