使用泛型关键字“where”限定泛型参数的类型
例如,在C#中,我们需要定义一个接口,接口的一个方法使用了本身为泛型的泛型参数:
public interface ITest(T t, S s);
}
这种写法会产生编译错误,可以修改为:
public interface ITest(T t, S s) where S : new();
}
其中,关键字“where”用于限定泛型参数“S”的类型,这里指定为一个具有公共无参构造函数的类型。
如果需要泛型参数“S”继承自某个类,也可以使用“where”关键字进行限定:
public interface ITest(T t, S s) where S : BaseClass;
}
这样,就可以安全地使用本身为泛型的泛型参数了。