第一节泛型
Posted yoyo-524
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一节泛型相关的知识,希望对你有一定的参考价值。
.Net Framework1.0 c# 1.0 版本
打印不同的类型参数,需要些多个方法
/// <summary>
/// 打印一个int值
/// </summary>
/// <param name="iParameter"></param>
public static void ShowInt(int iParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, iParameter.GetType().Name, iParameter);
}
/// <summary>
/// 打印个string值
/// </summary>
/// <param name="sParameter"></param>
public static void ShowString(string sParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, sParameter.GetType().Name, sParameter);
}
/// <summary>
/// 打印个DateTime值
/// </summary>
/// <param name="oParameter"></param>
public static void ShowDateTime(DateTime dtParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(CommonMethod).Name, dtParameter.GetType().Name, dtParameter);
}
可以通过Object父类继承的方式来优化代码
/// <summary>
/// 打印个object值
/// 1 object类型是一切类型的父类
/// 2 通过继承,子类拥有父类的一切属性和行为;任何父类出现的地方,都可以用子类来代替
///
/// .Net Framework1.0 1.1
/// 亚当 任何一个夏娃,都可以
///
/// 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}");
}
/// <summary>
/// 2.0推出的新语法
/// 泛型方法解决用一个方法,满足不同参数类型;做相同的事儿
/// 没有写死参数类型,调用的时候才指定的类型
/// 单身狗:小西瓜
/// 章子怡 范冰冰 凤姐
/// 延迟声明:把参数类型的声明推迟到调用
///
/// 推迟一切可以推迟的~~ 延迟思想
///
///
/// 不是语法糖,而是2.0由框架升级提供的功能
/// 需要编译器支持+JIT支持
/// </summary>
/// <typeparam name="T">T/S 不要用关键字 也不要跟别的类型冲突 </typeparam>
/// <param name="tParameter"></param>
public static void Show<T>(T tParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(GenericMethod), tParameter.GetType().Name, tParameter.ToString());
}
public static void ShowObject(object oParameter)
{
Console.WriteLine("This is {0},parameter={1},type={2}",
typeof(GenericMethod), oParameter.GetType().Name, oParameter);
}
以上是关于第一节泛型的主要内容,如果未能解决你的问题,请参考以下文章
Java 泛型泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
Java 泛型泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
Kotlin学习手记--泛型泛型约束泛型型变星投影泛型擦除内联特化
Java 泛型泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )