习题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>只能用作方法参数,不能用作返回类型。