我写了一个看起来像这样的课:
public class MyClass<T>
{
public void doSomething()
{
T.somethingSpecial;
}
}
此代码无法编译,因为编译器不知道T是什么。我想约束T,以便它必须继承某个定义somethingSpecial
的类。如果您可以通过限制T来告诉我如何做同样的事情,那么它必须实现某个界面。
答案 0 :(得分:14)
public class MyClass<T> where T: IAmSomethingSpecial
答案 1 :(得分:4)
答案 2 :(得分:4)
你想要的是generic constraint:
public class MyClass<T> where T : SomeParentClass
答案 3 :(得分:1)
public class MyClass<T> where T : ISomeInterface
{
public void doSomething()
{
instanceOfT.somethingSpecial();
}
}
答案 4 :(得分:1)
阅读文档。通用约束。
class MyClass<T> where T : someinterfaceorbaseclassthatTmustinherit
答案 5 :(得分:1)
public interface ISomeInterface
{
void DoSomething();
}
public class MyClass<T> where T : ISomeInterface
{
public void doSomething()
{
T.DoSomething();
}
}
where
关键字允许您指定给定泛型类型的约束。你可以换掉一个类的接口。