在 Unity 中初始化 Class 变量的最佳方式

Best Way to Initialize Class Variables in Unity

在使用了几年 C++ 之后,我正在使用 Unity 深入研究另一种语言 (C#)。我正在做我的第一个 class 作业。我的教授将一些变量声明为私有,但她在声明后立即初始化它们。在 C++ 中,我们永远不会在私有块中初始化私有数据成员,而是在构造函数中。根据我的阅读,我们不应该在派生自 MonoBehaviour 的 classes 中使用构造函数。所以我的问题是:

在 C# 的 class 中声明时初始化私有对象(字符串、整数等)是否可以?或者这是我们不应该做的事情,就像在 C++ 中一样,它们应该在其他地方初始化?

是的,确实没问题,但如果他们实现了 MonoBehaviour,也可以在 Start() 方法中初始化它

我不认为你的问题有直接的答案,而是好的做法。

首先,C# 会自动为常见类型提供默认值(int > 0、char > 0 ('\0')、float 0.0f、引用类型为 null,...)所以你可以这样做不需要初始化那些,除非你有一个涉及特定初始值的特定行为(比如,将最大值赋予一个用于返回最小值的函数的 int)。 此 属性 扩展到结构(包含 int 和字符串的结构将自动初始化为这些字段的 0 和 null)。

对于引用类型,一般而言,任何需要自定义的东西 allocation/initialisation,如果可能的话,我通常会在构造函数中完成所有这些操作,因为,嗯,这就是它们的用途,让你准备供外部用户使用的对象。

如果是Unity,在Start()中初始化也应该很好。

你的教授方式当然可以接受。更多信息: Initialization - Stack Overflow