答案 0 :(得分:4)
为什么不那样? (如果你有权访问T,那么在StoreDataTestHelper中创建一个bla实例没有多大意义)
public void StoreDataTestHelper<T>() where T : BaseStoreItem, new()
{
FileStore<T> target = new FileStore<T>();
T data = new T();
target.StoreData(data);
}
答案 1 :(得分:1)
当T为“bla”类型时
您的上述条件仅适用于当前案例,但我可以创建另一个类
public class Bla2: BaseStoreItem {...
然后Bla2&lt;&gt; bla ...,Bla2都不是来自bla,所以如果我尝试使用
StoreDataTestHelper<Bla2>();
这是错误的,编译器足够聪明,可以理解在这种情况下它不起作用,计算机语言不像英语,它们被创建为在所有条件下完全相同。它们的设计使得语言规则在所有情况下都是正确的。如果它们不同,您将发现混乱,找出错误的位置。
答案 2 :(得分:0)
答案 3 :(得分:0)