-1

私はこのようなものを持っています:

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?
}

何が間違っているのかわかりません。「ship.Engine.Piston.pistons」が機能しないのはなぜですか?

4

2 に答える 2

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
    }

}

使用後は次のようになります。

int a = ship.MyEngine.MyPiston.pistons
于 2013-01-29T14:01:48.540 に答える
3

そのメソッドにアクセスするには、サブタイプ(ネストされたタイプ)のオブジェクトを開始する必要があります。この場合、ネストされたタイプのオブジェクトを作成していないため、そのメソッドにアクセスできません。

を作成している間は、またはnew Ship()を作成していないため、存在しないオブジェクトのメソッドにアクセスすることはできません。EnginePistonPistons()

于 2013-01-29T14:08:09.343 に答える