c# - 您只能使用第二类创建类对象(第一类没有构造函数?)

标签 c# class constructor

来自 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/

相关文章:

c# - 为什么我的 blazor 页面会导致 github 页面出现 404 错误?

c# - 请求匹配多个操作,导致 ASP.NET 5/MVC 6 中具有不同参数的操作不明确

c# - 如何使用 List<string>.Sort 按长度对字符串列表进行排序?

类构造函数和成员变量(字段)

java - 备用构造函数调用

javascript - typescript ,使用没有构造函数的类

c# - 如何使用 Visual Studio 为 .net Framework 4.7.2 项目创建 SDK 样式项目?

php - 在 php 类文件中嵌入 html

c++ - A 类需要 B 类,B 类需要 A 类及其所有成员

c# - 构造函数的命名/可选参数是否有性能损失?