Warum schlägt Visual Studio vor, Sammlungsausdrücke für Warteschlangen <T> zu verwenden, wenn es zu einem Compiler -FehlC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum schlägt Visual Studio vor, Sammlungsausdrücke für Warteschlangen <T> zu verwenden, wenn es zu einem Compiler -Fehl

Post by Anonymous »

Ich erhalte einen Vorschlag, einen Sammlungsausdruck zu verwenden, der zu einem Compiler-Fehler führt: < /p>
public async IAsyncEnumerable WrapObjectAsync(IEnumerable items, [EnumeratorCancellation] CancellationToken token)
{
// FOCUS ON THIS -->
Queue queue = new Queue(items.Select(item => (item, SomeEnum.SomeValue)));
// Suggestion from VS :
Queue queue = [.. items.Select(item => (item, SomeEnum.SomeValue))];
/* Compiler Error :
* 'Queue' does not contain a definition for 'Add' and no accessible extension method 'Add'
* accepting a first argument of type 'Queue' could be found (are you missing a using directive
* or an assembly reference?)
*/
// 0)
{
(var item, SomeEnum state) = queue.Dequeue();
// Do something...
if (state == SomeEnum.Value)
yield return item;
else
{
// Retry
queue.Enqueue((item, SomeEnum.SomeOtherValue));
}
}
}
< /code>
Nach meinem Verständnis ist dies darauf zurückzuführen, dass die Warteschlange keine Add -Methode hat, was der Sammlungsausdruck zu verwenden versucht, aber wenn dies der Fall ist, sollte es nicht wissen, dass sie die Änderung nicht vorschlagen sollen? Habe ich etwas vermisst oder missverstanden? Dies ist in einem vor kurzem erstellten Net 8 -Projekt. Ich würde erwarten, dass die Analysatoren auf dem neuesten Stand sind ...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post