来自 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
第二类:
public sealed class World
//Member of GTA
使用方法:
public static GTA.Vehicle CreateVehicle(GTA.Vector3 Position)
您不能仅使用以下方法从 Vehicle 创建对象:
Vehicle veh = new Vehicle();
因为 Vehicle 没有构造函数。
但是你可以使用这段代码:
Vehicle veh = World.CreateVehicle(params);
它是怎么做出来的?
最佳答案
构造函数是私有(private)的,因此它们强制您使用特定的方法来创建实例。这被称为工厂模式;在 World 类内部,该方法能够使用构造函数创建 Vehicle
的新实例,但您不能。
编辑:如果你想创建这种功能,那么你会做这样的事情:
public class MyPublicClass
{
public MyPrivateClass CreateClass()
{
return MyPrivateClass.GetInstance();
}
}
public class MyPrivateClass
{
internal static MyPrivateClass GetInstance() { return new MyPrivateClass(); }
protected MyPrivateClass() { }
}
关于c# - 您只能使用第二类创建类对象(第一类没有构造函数?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066783/