我必须为一个新的类实例指定名称吗?

本文关键字:实例 定名称 一个 | 更新日期: 2023-09-27 18:07:06

我正在用unity制作一款简单的游戏,并且有一些不确定因素你可以帮助我:我必须命名类的新实例吗?例如:

public class CreateCharacter : MonoBehaviour {
public string charname;
public CreateCharacter (string charname)
{
    this.charname = charname;
    //does all the stuff needed
}}

我想从另一个脚本运行:

int e = data.Length - 1;
            if (e > 0)
            {
                new CreateCharacter(data[e]);
                e--;
            }

data是一个字符串数组,CreateCharacter将把新的Character对象存储在一个这样的对象列表中,因此我可以稍后访问它。我的问题是:我一定要写:

CreateCharacter SomeName = new ChreateCharacter

让代码运行?还是简单的

new Class (constructor)

足够了吗?

我必须为一个新的类实例指定名称吗?

虽然这是一个糟糕的做法,新的东西,而不是把它扔到一个变量,代码将编译和运行良好。另外,是否有一个叫做CreateCharacter的类的原因?而不是一个函数,返回一个实际字符给定的数据?

您可以像您所说的那样单独调用构造函数。但是,请记住,新创建的对象将在构造函数完成后立即脱离作用域并被释放。因此,根据"//做所有需要的东西"中包含的内容,它可能-潜在地-崩溃你的应用程序(尽管这不太可能)。

正如在其他答案中所述,将新创建的对象赋值给变量是一种可读性和功能性的最佳实践,即使仅用于该for循环的作用域。

不存储它不会导致程序死亡。

new CreateCharacter(data[e]);

但是,是的,你想要存储它这样你就可以调用它的方法,比如

CreateCharacter char = new CreateCharacter(string);

char.methodName();

您的另一个选择是将您试图在static method中执行的代码,因为似乎您在构造函数中运行的代码不依赖于类CreateCharacter的实例。

如果使用

new Class (constructor)

是匿名对象,它完成了任务。只要对象不从代码的其他地方引用,就使用这个对象之王,它的好处是您不需要为它找到合适的名称。