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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum schlägt Visual Studio vor, Sammlungsausdrücke für Warteschlangen <T> zu verwenden, wenn es zu einem Compiler -Fehl

by Anonymous » 10 Apr 2025, 10:38

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 ...

Top