我们怎样才能继承内部类

本文关键字:继承 内部类 我们 | 更新日期: 2023-09-27 18:25:51

我正在尝试以下操作,但在编译时出现错误

   class Program
{
    static void Main(string[] args)
    {
        shape.innershape s = new rectangle(); // Error Here
    }
}
class shape
{
    public int nshape = 0;
    public shape()
    {
        nshape = 1;
        innershape n = new innershape();
    }
    public void MakeOuterShape()
    {
    }
    public class innershape
    {
        public int nInnerShape = 0;
        public innershape()
        {
            nInnerShape = 1;
        }
        public void makeInnerShape()
        {
        }
    }
}
class rectangle :shape
{
     // Code goes here.
}

我继承了包含innershape类定义的Shape类。但当我试图参照innershape来创建Rectangle类的实例时,我发现了编译时的错误。为什么?怎样才能使它成为可能?

我们怎样才能继承内部类

C#中的内部类与Java内部类不同,它们不属于外部类,这只是可见性的问题。

您必须从shape.innershape派生矩形。

因为矩形源自形状,而非内部形状

  class rectangle: shape {
  ...
  public class innershape
  {
   ...

你不能写

shape.innershape s = new rectangle(); // <- can't convert rectangle to shape

但是你可以放

  shape s = new rectangle(); // shape is super class for rectangle

Perharps您应该将代码更改为

  class rectangle :shape.innershape 
  {
  ...

还可以尝试将类公开,这样可见性就不会受到限制。