C# 什么';此错误的原因是什么(继承带有泛型的类)?

C# 什么';此错误的原因是什么(继承带有泛型的类)?,c#,generics,inheritance,C#,Generics,Inheritance,我正在创建一组泛型类,逐步将泛型类型从T指定为存储类的示例 public class ModifiedList<example_of_stored_class> : AdvancedList<example_of_stored_class> { public void someMethod () { } } public class AdvancedList<T> : List<T> where T : example_

我正在创建一组泛型类,逐步将泛型类型从T指定为存储类的示例

public class ModifiedList<example_of_stored_class> : AdvancedList<example_of_stored_class> 
{
    public void someMethod ()
    {
    }
}

public class AdvancedList<T> : List<T> where T : example_of_stored_class
{
    public AdvancedList ()
        {

        }
}
public class example_of_stored_class
{
    public string s = "Hi, i'm an example_of_stored_class!";
}
公共类修改列表:AdvancedList
{
公共方法()
{
}
}
public class AdvancedList:列表,其中T:存储的类的示例
{
公开进阶名单()
{
}
}
存储类的公共类示例
{
public string s=“嗨,我是存储类的一个例子!”;
}
错误消息:

类型“存储的\u类的示例\u”不能用作泛型类型或方法“AdvancedList”中的类型参数“T”。没有从“存储类的示例”到“R7应用程序的示例”的装箱转换或类型参数转换


问题是,“存储类示例”和“R7应用程序。存储类示例”之间有什么区别?这是一个类型参数,因为它出现在类定义中的类名后的尖括号中:根据C的规则,你说的是
修改类
采用了一个名为
存储类的示例
的类型参数。使用您的类的人可以为该参数提供任何实际类型(至少,如果整个过程从一开始就编译好的话):

这将汇编:

public class ModifiedList<T> : AdvancedList<example_of_stored_class>
{
    public void someMethod()
    {
    }
}
公共类修改列表:AdvancedList
{
公共方法()
{
}
}
但我怀疑您确实希望
ModifiedList
继承具有相同类型参数的
AdvancedList

public class ModifiedList<MyT> : AdvancedList<MyT>
{
    public void someMethod()
    {
    }
}
公共类修改列表:AdvancedList
{
公共方法()
{
}
}
或者,您希望存储类的示例作为图片中唯一的类型参数。在这种情况下,ModifiedList不是通用的。它继承自一个“已实现”的泛型类,该类已经提供了一个类型参数

public class ModifiedList : AdvancedList<example_of_stored_class>
{
    public void someMethod()
    {
    }
}
公共类修改列表:AdvancedList
{
公共方法()
{
}
}
就是这样:

public class ModifiedList : AdvancedList<example_of_stored_class>
{
    public void someMethod()
    {
    }
}
公共类修改列表:AdvancedList
{
公共方法()
{
}
}
ModifiedList声明中有错误。我不需要两次声明存储类的示例。谢谢你,爱德·普朗克特

你不能写:

ModifiedList<example_of_stored_class> : AdvancedList<example_of_stored_class>
ModifiedList:AdvancedList
因为在语句的第一部分中,必须指明用于“替换”的泛型参数

因为它不可能是一种类型

你必须写:

ModifiedList<T> : AdvancedList<example_of_stored_class>
ModifiedList:AdvancedList
其中T不是作为类的代码定义类型,因为它是模板工件

这里的“模板”一词指的是C++模板,甚至C泛型与C++模板不一样,但历史泛型来自模板。

你只是想写:

ModifiedList : AdvancedList<example_of_stored_class>
ModifiedList:AdvancedList

请在问题正文中以文本形式发布错误。屏幕截图对于我们这些阅读您的问题的人来说非常不方便,而且无法搜索。R7_app是您的类还是您的命名空间?您是否意外定义了两次存储类的示例,一次在全局命名空间中,一次在
R7\u应用程序
命名空间中?请注意
public class ModifiedList
正在定义一个名为
example\u of_stored\u class
的泛型类型,而不是使用class type
example\u of_stored\u class
。是否缺少
public class
前缀?
ModifiedList<T> : AdvancedList<example_of_stored_class>
ModifiedList : AdvancedList<example_of_stored_class>