比方说,我有一个如下的C#接口:为什么实现具有类型约束的泛型接口的泛型类需要重复这些约束?
public interface IInterface<T> where T : SomeClass
{
void InterfaceMethod();
}
,并按如下SomeClass的定义:
public class SomeClass
{
public void SomeMethod();
}
现在,我想定义接口的实现,这将不编译:
public class InterfaceImpl<T> : IInterface<T>
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Gives Error
}
}
之前,我将其更改为:
public class InterfaceImpl<T> : IInterface<T> where T : SomeClass
{
public void InterfaceMethod()
{
T test = default(T);
test.SomeMethod(); //Compiles fine
}
}
从界面中类型约束是否也是“继承的”(不是我所知道的正确的词)是不合理的?
如果没有指定,他们可能已经“默认”实现了。但实际的语法允许重新定义约束(继承,new()关键字等),这很好。 – AFract 2015-02-05 18:32:10