基本类 - 嵌套类

wca*_*ale -1 c# class

我有这样的事情:

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?
}
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.为什么"ship.Engine.Piston.pistons"不起作用?

Tig*_*ran 5

因为Engine内部的Ship类型,以及它的成员.

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

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
    }

}
Run Code Online (Sandbox Code Playgroud)

在使用之后它像:

int a = ship.MyEngine.MyPiston.pistons
Run Code Online (Sandbox Code Playgroud)