基本类 - 嵌套类

本文关键字:嵌套 | 更新日期: 2023-09-27 17:56:25

我有这样的东西:

public class Ship
{
    public void PositionX_pixels_set1(float _position_x){position_x = _position_x;}
    public class Engine : Ship
    {
        public int engines() { return 5; }
        public class Piston
        {
            public int pistons(){return 5;}
        }
    }
}

void Main
{
    Ship ship = new Ship()
    int a = ship.Engine.Piston.pistons;//why this not working?
}

我不知道我做错了什么。为什么不是"船。发动机.活塞.活塞"工作?

基本类 - 嵌套类

因为EngineShip类及其成员中的类型

要解决此问题,可以执行以下操作:

public class Ship
{
    public void PositionX_pixels_set1(float _position_x){position_x = _position_x;}
    private void Engine _myEngine = new Engine(); //DEFINE ENGINE MEMBER
    public Engine MyEngine {   //DEFINE A PROPERTY TO ACCESS THAT MEMBER
        get {
           return _myEngine;
        }
    }
    public class Engine : Ship
    {
        public int engines() { return 5; }
        private Piston _myPiston = new Piston();//DEFINE PISTON MEMBER
        public Piston MyPiston {//DEFINE A PROPERTY TO ACCESS THAT 
           get {
               return _myPiston ;
           }
        }
        public class Piston
        {
            public int pistons(){return 5;}
        }
       MEMBER
    }
}

使用后,例如:

int a = ship.MyEngine.MyPiston.pistons

您必须启动子类型(嵌套类型)的对象才能访问其方法,在您的情况下,您不会创建嵌套类型的任何对象,因此无法访问其方法。

创建new Ship()时,您不会创建任何EnginePiston,因此无法访问不存在对象的方法Pistons()