泛型约束

1、接口约束

/// <summary>
/// 接口约束
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T Get<T>(T t) where T : ISports
{
      return t;
}

  关键代码: where T :Isports

2、引用约束

/// <summary>
/// 引用约束
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T Get<T>(T t) where T : class
{
      return t;
}

  关键代码: where T :class

3、值类型约束

/// <summary>
/// 值类型约束
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T Get<T>(T t) where T : struct
{
      return t;
}

  关键代码: where T :struct

4、无参构造函数约束

/// <summary>
/// 无参构造函数约束
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T Get<T>(T t) where T : new()
{
      return t;
}

5、多种泛型约束

/// <summary>
/// 多种泛型约束
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static T Get<T>(T t) where T :class,struct,new()
{
      return t;
}

  注意:有多种约束是,一定要把 无参构造函数约束( new() )放到最后

posted @ 2022-08-11 09:43  yuezc97  阅读(32)  评论(0)    收藏  举报