12章泛型练习

习题1

泛型类/方法/结构/接口/委托
属性/运算符重载不存在泛型,但是可以使用自己本身类提供的泛型类型参数

习题3

强制使用new()约束

public class Inter<T>
    where T : new()
{
    public T instance;
    public Inter()
    {
        instance = new T();
    }
}
//或者使用下面
   public class Inter<T>
where T : new()
{
    public T instance;
    public Inter()
    {
        instance = default(T);
    }
}

习题6 变体

  • 协变和抗变

正常的多态性,派生类与父类之间,允许派生类放入基类型的变量中,
允许相互间的转换
然而不适用于接口,
此时通过协变Convariance解决派生类型放入基类型的变量中
抗变Contravariance解决基类型放入其派生类型的变量中
抗变和协变是类似的,但方向相反。

注意
协变类型参数< out T>只能用作方法的返回值或属性get访问器。
抗变类型参数< in T>只能用作方法参数,不能用作返回类型。

猜你喜欢

转载自blog.csdn.net/qq_34332733/article/details/79405466
今日推荐