Can't use priority queue in C# .NET 6

Viewed 2006

I'm trying to use PriorityQueue in C# with Unity and from the documentation it's said that .NET 6 is supported, and the needed namespace is System.Collections.Generic.

I've tried that:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class Test : Monobehaviour
{
    void Start()
    {
        var queue = new PriorityQueue<int, int>();
    }
}

But an error is thrown back:

The type or namespace name 'PriorityQueue<,>' could not be found (are you missing a using directive or an assembly reference?) [Assembly-CSharp]

I've checked the .NET version within VS Code: enter image description here

So any idea why this is happening?

1 Answers

The version reported by dotnet is completely unrelated to Unity's C#/.NET version (at least until Unity finally migrates from Mono). While the language supported is almost equal to C# 9.0, the actual library that is used is a loose superset of what Mono provides, and actually is roughly equal to .NET Framework 4.8/.NET Standard 2.0 ATM; since neither of those has PriorityQueue, it's not available. You can either:

Related