c#我是否必须为新的类实例指定名称?

时间:2016-09-15 17:43:52

标签: c# class unity3d

我正在制作一个简单的游戏,你可以帮我一个小的不确定性: 我必须命名一个类的新实例吗? 例如:

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)

足够?

4 个答案:

答案 0 :(得分:1)

虽然新东西的做法不好而不是把它扔进变量,但是这段代码会编译并运行得很好。另外,你有一个名为CreateCharacter的类吗?而不是给定数据返回实际字符​​的函数?

答案 1 :(得分:1)

它不会导致程序在不存储的情况下死亡。

new CreateCharacter(data[e]);

但是,是的,你想存储它,以便你可以调用它上面的方法,如

CreateCharacter char = new CreateCharacter(string);

char.methodName();

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

答案 2 :(得分:1)

您可以按照自己的说法单独调用构造函数。但是,请记住,新创建的对象将立即超出范围,并在构造函数完成后取消分配。因此,根据“//所有需要的东西”中包含的内容,它可能会使您的应用程序崩溃(尽管不太可能)。

正如其他答案中所述,将新创建的对象分配给变量是可读性和功能性的最佳实践,即使只是针对for循环的范围。

答案 3 :(得分:1)

如果您使用

  

新类(构造函数)   

它是匿名对象,它完成了这项工作。只要未从代码的其他位置引用对象,就会使用此对象之王,其好处是您不应为此找到合适的名称。