Can't use C# .NET 6 PriorityQueue in Unity

8.4k views Asked by At

I'm trying to use PriorityQueue in Unity with C#. The documentation says that it's supported in .NET 6 in namespace System.Collections.Generic.

I've tried:

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

Why doesn't it work in Unity?

1

There are 1 answers

1
user213769 On BEST ANSWER

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: