设计模式——02泛型基础

通过继承,子类拥有父类的一切行为和属性;
任何父类出现的地方,都可以用子类来替代。
object是所有类型的父类;

延迟思想

  • 推迟一切可以推迟的;
  • 泛型就是用的一种延迟的思想;
  • 延迟到使用的时候才知道具体的类型;
  • 方法声明的时候没有指定参数类型,而是推迟到使用方法的时候才指定参数类型

声明

ShowT<T>(T tParameter)
T,占位符,可以随便写,通常使用单个字母;
T tParameter T类型的参数

调用

ShowT<DateTime>(dtParameter);
ShowT<People>(people);
ShowT<string>("hello");

  • 泛型的参数个数可以随便定义
    static void Show<T,S,W>(T t,S s,W w,int iParameter,string sParameter)

  • ShowT("hello")
    调用的时候,可以不传类型参数,可以自动推算

为什么要有泛型

  • 泛型实际上是语法糖,有编译器提供的功能,调用泛型的时候会为调用方 生成相应的副本。
  • 泛型方法,泛型接口,泛型类,在之后的学习中,泛型无处不在,非常的重要;
  • 因为泛型是基于原始方法来使用(由编译器来转换),不像object需要装箱和拆箱,没有性能损失。
  • 解决了把多个参数传到1个参数。

深入了解泛型

一个方法可以支持不同类型的参数

  • 泛型方法之泛型返回,泛型不仅可以作为参数,还可以作为返回值类型
public static T Get<T>(int id)
  • 泛型类
public class SomeGeneriClass<W,S,T,TI>{}
  • 泛型接口
public interface GenericInterface<T,S,s>{}
  • 泛型委托
public delegate GetDelegate<T>();
  • 泛型的约束
public static T Get<T>(T t) where T: class
{return default(T);}
  • 泛型约束声明后,类型参数必须满足约束
  • 引用类型
where T:class
  • 值类型
where T:struct
  • 无参构造 new()
public static T Get<T>(T t) where T: class,new()
{
T ttt = new T();
return null;
//return default(T);
}
  • 最实用的约束
public static void SayHi<T>(T t) where T : people
{
Console.WriteLine("ID={0},Name={1}",t.id,t.name);
//t必须是people类型或者people的子类
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,806评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,169评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,941评论 1 10
  • 夕阳西下,两个人去湖边跑步 。 远香湖水域纵横交错,四处散落着荷田,嘉定新城最美的季节当属接下来的七月。 采了荷叶...
    摄影师静心阅读 248评论 0 1