Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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# 基本类-嵌套类_C#_Class - Fatal编程技术网

C# 基本类-嵌套类

C# 基本类-嵌套类,c#,class,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

我有这样的想法:

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

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

因为
发动机
类型的
船及其成员中

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

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()
时,您没有创建任何
引擎
活塞
,因此您无法访问不存在对象的方法e
活塞()?它编译吗?它是否通过一个例外?是否计算了意外值?