Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承抽象泛型类时出现问题_C#_Oop - Fatal编程技术网

C# 继承抽象泛型类时出现问题

C# 继承抽象泛型类时出现问题,c#,oop,C#,Oop,我有一个抽象的泛型类: public abstract class A<T> where T : class, new(){ public A (IEnumberable<T>_Data){ this.Data = _Data; } private IEnumerable<T>_data; public IEnumerable<T> Data{ get { return _data;

我有一个抽象的泛型类:

public abstract class A<T> where T : class, new(){

    public A (IEnumberable<T>_Data){
         this.Data = _Data;
    }

    private IEnumerable<T>_data;
    public IEnumerable<T> Data{
      get { return _data; }
      set { _data = value;}
    }

}
公共抽象类A,其中T:class,new(){
公共A(IEnumberable_数据){
this.Data=\u Data;
}
私有IEnumerable_数据;
公共IEnumerable数据{
获取{return_data;}
设置{u data=value;}
}
}
然后,当我继承该类时:

public class B<T> : A<T> where T : class, new(){

}
public class B:A其中T:class,new(){
}
我得到一个错误,说:

There is not argument that corresponds to the required formal parameter '_Data' of 'A<T>.A(IEnumerable<T>)'
in the 'B' class.
没有与“A.A(IEnumerable)”的必需形式参数“\u Data”对应的参数
在B班。

您需要继承
A
,而不是
A

public class B<T> : A<T> where T : class, new(){

}

您需要继承
A
,而不是
A

public class B<T> : A<T> where T : class, new(){

}

正如它在错误中所说的,它无法创建基类,因为您没有在B中提供正确的构造函数。如果要传递任何参数,请将其更改为此

public class B<T> : A<T> where T : class, new(){
  public B(IEnumerable<T> data):base(data) {
    }
}
public class B:A其中T:class,new(){
公共B(IEnumerable数据):数据库(数据){
}
}

否则,请在构造函数中新建数据并将其传递给base。

正如错误中所述,它无法创建基类,因为您没有在B中提供正确的构造函数。如果要传递任何参数,请将其更改为此

public class B<T> : A<T> where T : class, new(){
  public B(IEnumerable<T> data):base(data) {
    }
}
public class B:A其中T:class,new(){
公共B(IEnumerable数据):数据库(数据){
}
}

否则,,在构造函数中新建数据并将其传递给基类。

在基类上提供公共无参数构造函数,或者按照其他人的建议,通过从派生类传递
IEnumerable
来调用基类构造函数。

在基类上提供公共无参数构造函数,或者作为其他构造函数建议通过从派生类传递
IEnumberable
什么是
public a(_Data)
来调用基类构造函数?这不能编译!这是一个构造器是的,我在这里手工输入了代码。这是打字错误。无论如何都解决了什么是公共的(_数据)?这不能编译!这是一个构造器是的,我在这里手工输入了代码。这是打字错误。我的原始代码有点复杂,所以我在这里手工输入。我确实继承了雅典娜,确保你在发布这个问题之前提供了一个可验证的例子。我的原始代码有点复杂,所以我在这里手工输入。我确实继承了雅典娜,确保你在发布这个问题之前提供了一个可验证的例子。或者适当地编辑它。