Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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# 使用更多指定的返回类型(协方差)重写抽象属性 类基类{} 抽象A类 { 抽象公共列表项{get;set;} } 派生类:基{} B类:A { 私人清单项目; 公共覆盖列表项 { 得到 { 退货项目; } 设置 { 项目=价值; } } }_C#_C# 4.0_Overriding_Abstract_Covariance - Fatal编程技术网

C# 使用更多指定的返回类型(协方差)重写抽象属性 类基类{} 抽象A类 { 抽象公共列表项{get;set;} } 派生类:基{} B类:A { 私人清单项目; 公共覆盖列表项 { 得到 { 退货项目; } 设置 { 项目=价值; } } }

C# 使用更多指定的返回类型(协方差)重写抽象属性 类基类{} 抽象A类 { 抽象公共列表项{get;set;} } 派生类:基{} B类:A { 私人清单项目; 公共覆盖列表项 { 得到 { 退货项目; } 设置 { 项目=价值; } } },c#,c#-4.0,overriding,abstract,covariance,C#,C# 4.0,Overriding,Abstract,Covariance,编译器说B.Items必须是基本元素的列表,以“匹配被重写的成员”A.Items。我怎样才能做到这一点呢?你最初试图完成的事情是不可能的。属性也是如此,因为属性只是 但您可以将类设置为通用类: class Base {} abstract class A { abstract public List<Base> Items { get; set; } } class Derived : Base {} class B : A { private List<

编译器说B.Items必须是基本元素的列表,以“匹配被重写的成员”A.Items。我怎样才能做到这一点呢?

你最初试图完成的事情是不可能的。属性也是如此,因为属性只是

但您可以将类设置为通用类:

class Base {}

abstract class A
{
    abstract public List<Base> Items { get; set; }
}

class Derived : Base {}

class B : A
{ 
    private List<Derived> items;
    public override List<Derived> Items
    {
           get
           {
               return items;
           }
           set
           {
            items = value;
           }
      }
  }
类基类{}
抽象A类
其中T:Base
{
抽象公共列表项{get;set;}
}
派生类:基{}
B类:A
{ 
私人清单项目;
公共覆盖列表项
{
得到
{
退货项目;
}
设置
{
项目=价值;
}
}
}

您最初试图实现的目标是不可能的。属性也是如此,因为属性只是

但您可以将类设置为通用类:

class Base {}

abstract class A
{
    abstract public List<Base> Items { get; set; }
}

class Derived : Base {}

class B : A
{ 
    private List<Derived> items;
    public override List<Derived> Items
    {
           get
           {
               return items;
           }
           set
           {
            items = value;
           }
      }
  }
类基类{}
抽象A类
其中T:Base
{
抽象公共列表项{get;set;}
}
派生类:基{}
B类:A
{ 
私人清单项目;
公共覆盖列表项
{
得到
{
退货项目;
}
设置
{
项目=价值;
}
}
}

但您可以仅对set或only get属性使用协方差。但您可以仅对set或only get属性使用协方差。