声明一系列队列



我代码中的语言语法问题是什么?我想声明一系列队列。这是声明和使用它们的正确方法吗?

   public static void Main(string[] args)
    {
        Queue<int>[] downBoolArray = new Queue<int>[8]();
        downBoolArray[0].Enqueue(1);
    }

您的第一个问题是语法错误:new Queue<int>[8]()应该是new Queue<int>[8]

一旦用正确的语法声明,当您尝试使用数组的元素(downBoolArray[0].Enqueue(1)(时,您会遇到nullreferenceException,因为数组元素初始化为其默认值,而在参考类型中为null

您可以使用linq的单行:

来初始化数组的数组。
Queue<int>[] downBoolArray = Enumerable.Range(1,8).Select(i => new Queue<int>()).ToArray();

Range的参数指定我们在顺序中需要8个"条目";Select语句为每个项目创建一个新的Queue<int>ToArray调用将我们的顺序输出为数组。

您需要初始化数组中的每个元素

void Main()
{
    Queue<int>[] downBoolArray =new Queue<int>[10];
    for (int i = 0; i < downBoolArray.Length; i++)
        downBoolArray[i] = new Queue<int>();
    downBoolArray[0].Enqueue(1);
}

您已经创建了一个 null values的数组。

您想要的就是这样:

public static void Main(string[] args) {
    var queues = new Queue<int>[8];
    // Possibly some other stuff
    // Initialise all values
    for (var i = 0; i < queues.Length; i++) {
        // Accounting for maybe already sporadically initialising values
        queues[i] = (queues[i]) ?? new Queue<int>();
    }
    // Do whatever
}

相关内容

  • 没有找到相关文章

最新更新