1.泛型引入
2.泛型声明
3.泛型特点+原理
4.泛型的优势,核心设计
5.泛型方法,泛型类
6.泛型接口,泛型委托
7.泛型约束,泛型缓存
8.协变,逆变
Course course = new Course
{
Id=1,
Name="蜗牛"
};
course = ShowClass<Course>(course);//引用类型
Console.WriteLine(course.Id );
Console.WriteLine(course.Name);
int iValue = 666;
ShowStruct<int>(iValue);
//值类型
void ShowStruct(T t) where T : struct
{
Console.WriteLine(t);
}
//引用类型
T ShowClass(T t) where T :class
{
return t;
}
//无参数约束
void ShowNew(T t) where T : new()
{
T t1 = new T();
}
//枚举约束
void ShowEnum(T t) where T : Enum
{
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Advanced.Project.Generic
{
///
/// 泛型接口
///
///
public interface GenericInterfac
{
public T Show();
}
/// <summary>
/// 泛型类
/// </summary>
/// <typeparam name="T"></typeparam>
public class GenericClass
{
public void Show(T t)
{
}
}
/// <summary>
/// 抽象泛型类
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class GenericAbstractClass<T>
{
public void Show(T t)
{
}
}
/// <summary>
/// 继承抽象泛型类
/// </summary>
public class ChildClass: GenericAbstractClass<string>
{
}
/// <summary>
/// 泛型类继续抽象泛型类
/// </summary>
/// <typeparam name="T"></typeparam>
public class ChildClass1<T>: GenericAbstractClass<T>
{
}
/// <summary>
/// 泛型类
/// </summary>
/// <typeparam name="T"></typeparam>
public class ChildClass2<T>
{
public T Show()
{
return default(T); //返回默认值
}
public T Show2(T t)
{
return t; //返回默认值
}
}
/// <summary>
/// 泛型委托
/// </summary>
/// <typeparam name="T"></typeparam>
public delegate T Genericdelegate<T>();
}
