【问题标题】:How is array variable is filled with values without initializing the variable with new keyword in C#?数组变量如何在不使用 C# 中的 new 关键字初始化变量的情况下填充值?
【发布时间】:2020-02-23 07:23:36
【问题描述】:

我有两个案例,无法弄清楚代码是如何工作的,请帮忙。谢谢

案例 1:

Transform[] zombiesTransform;
private void Start() 
{
  zombiesTransform = new Transform[5]; // now i have initialized so i can add some transform in it 
                                       //  which is fine

}

案例 2:

Zombie[] zombies;
private void Start() 
{
  zombies = FindObjectsOfType<Zombie>(); // how is this zombie array is filled with value without 
                                         // initializing zombies variable like "zombies = new Zombies[5]"
}

【问题讨论】:

  • Becase FindObjectsOfType 在内部创建数组,然后将对该数组的引用返回给它的调用者。调用者(您的代码)将引用分配给您的数组变量。
  • @Steve 现在我明白了。谢谢

标签: c# arrays unity3d


【解决方案1】:

我会尝试用一个例子来解释(好像我在写FindObjectsOfType的代码)

public T[] FindObjectsOfType<T>() where T : new() {
    T[] collection = new T[5];
    T[0] = new T();
    // create more T items
    return T;
}

那我在这里做什么?我是说泛型类型T 是新的(我可以创建它的一个对象),我声明并实例化一个新的T 对象数组,然后将它们返回给需要它们的对象。

【讨论】:

  • 基本上因为数组是一个引用,所以FindObjectsOfTypenew T[5] 都返回一个数组的引用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多