1.泛型类型参数:
使用装箱拆箱的方法:
void Print(Object obj)
{
System.Console.WriteLine(obj);
System.Console.WriteLine(obj.GetType());
}
使用泛型优化后:
泛型类无法按原样使用,因为它不是真正的类型;它更像是类型的蓝图。
void Print<T>(T obj)
{
System.Console.WriteLine(obj);
System.Console.WriteLine(obj.GetType());
}
2.泛型类型参数的约束:
通过在参数列表后添加where T:基类名,对泛型类型参数进行约束
void Print<T>(T obj) where T : struct{/*方法体*/}//只允许值类型参数
void Print<T>(T obj) where T : class{/*方法体*/}//只允许引用类型参数
void Print<T>(T obj) where T : 基类名 {/*方法体*/}//只允许指定基类或派生自指定基类类型参数
void Print<T>(T obj) where T : class? {/*方法体*/}//可为null的引用类型类型参数
3.字符串内插:
简化通常的占位符方法
System.Console.WriteLine("obj:{0},objType:{1}",obj,obj.GetType());//通常的方法
System.Console.WriteLine($"obj:{obj},objType:{obj.GetType()}");//字符串内插