dam*_*ned 2 c# constructor class
ScriptHookDotNet的示例:
头等舱:
public sealed class Vehicle : GTA.base.HandleObject
//Member of GTA
public abstract class HandleObject : GTA.base.Object
//Member of GTA.base
public abstract class Object
//Member of GTA.base
Run Code Online (Sandbox Code Playgroud)
二等:
public sealed class World
//Member of GTA
Run Code Online (Sandbox Code Playgroud)
使用方法:
public static GTA.Vehicle CreateVehicle(GTA.Vector3 Position)
Run Code Online (Sandbox Code Playgroud)
您无法使用以下方法从Vehicle创建对象:
Vehicle veh = new Vehicle();
Run Code Online (Sandbox Code Playgroud)
因为Vehicle没有构造函数.
但是你可以使用这段代码:
Vehicle veh = World.CreateVehicle(params);
Run Code Online (Sandbox Code Playgroud)
这个怎么做的?
构造函数是私有的,因此它们强制您使用特定方法来创建实例.这被称为工厂模式; 在World类的内部,该方法具有Vehicle
使用构造函数创建新实例的能力,但您不能.
编辑:如果你想创建这种功能,那么你会做这样的事情:
public class MyPublicClass
{
public MyPrivateClass CreateClass()
{
return MyPrivateClass.GetInstance();
}
}
public class MyPrivateClass
{
internal static MyPrivateClass GetInstance() { return new MyPrivateClass(); }
protected MyPrivateClass() { }
}
Run Code Online (Sandbox Code Playgroud)