💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## Ship的实例化 所有的类在使用前都是需要实例化的,Ship作为一个类也不例外。 ``` void Main(){ Ship MyShip = new Ship(); } ``` 通过new关键字加类名加()来实例化一个类。 实例化是在为这个类准备必要的数据,同时将这个类作为一个独立的个体生成出来。 Ship类当然是需要一堆方块,所以它需要传入一堆方块。 >[danger] Ship类提供了两个实例化方法(构造方法重载) ``` void Main(){ Ship MyShip_1 = new Ship(); //不传入参数,得到一个空的Ship类,不能使用。 List<IMyTerminalBlock> Blocks = new List<IMyTerminalBlock> Blocks(); //将所需的方块放进Blocks里,其中必须包含一个IMyShipController作为主控方块。 Ship MyShip_2 = new Ship(Blocks); //传入所有方块,得到一个实例化的Ship类。 } ``` >[success] 如何判断Ship类初始化成功: > Ship类采用了一个string Debug成员变量来判断它是否初始化成功,默认值是"Normal"。 > 由于在class中无法直接调用Echo()等方法进行调试,所以采用一个变量来将其状态传出,再在Main中进行判断和调试是最有效的方法。 > 你可以在实例化Ship后立刻访问它的Debug变量,判断它是否是默认值,从而判断这个Ship是否实例化成功。 > Ship类默认的限制了必须至少传入一个IMyShipController方块作为主控,如果没有,它会直接中断实例化并将Debug设为"Cockpit Not Found" > 你也可以在构造方法public Ship(List<IMyTerminalBlock> Blocks)中自定义你的所需的判断条件 在实例化好了Ship类以后,必须执行如下几个方法: ``` Ship MyShip; void Main(){ ... //假设你在前面已经实例化好了一个Ship类,名字是MyShip,接下来你必须执行这两步 Ship.timetick ++; //让时钟变量自增,因为timetick是静态属性,所以用Ship.timetick访问而不是MyShip.timetick MyShip.UpdatePhysical(); //更新飞船的物理信息,其他的很多方法都依赖于飞船的物理信息 } ``` >[danger]这里有必要说明一下什么是类的静态属性 >当类中有一个变量 public string Name,这是不加修饰的公共变量,它默认是非静态的。 >当你看到 public static string Address,它是加了static关键字修饰的,这就是一个静态属性。 >你可以这样理解: >非静态属性是当这个类实例化出来以后才产生的,它是这个实例化出来的对象的属性,当你使用Ship类实例化出多个对象时,这几个对象的非静态属性是互相独立的。所以使用 实例化出来的变量名.属性名 去访问它 >静态属性是这个类的属性,它和实例化出来的对象无关,相当于这个类本身就是一个对象,这个静态属性属于这个类,所以使用 类名.属性名 去访问它