Teilen über


ASP0006: Keine nicht literalen Sequenznummern verwenden

Wert
Regel-ID ASP0006
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend

Ursache

Ein Aufruf einer Methode in RenderTreeBuilder, die eine Sequenznummer als Parameter enthält, bei der es sich nicht um ein Literal handelt.

Regelbeschreibung

Der Vergleichsalgorithmus der Benutzeroberfläche von Blazor basiert auf Sequenznummern, um festzustellen, welche Elemente sich geändert haben. Die dynamische Berechnung der Sequenznummer oder Verwendung eines Zählers kann zu einer schwachen Vergleichsleistung führen. Verwenden Sie stattdessen eine literale Sequenznummer, die der Quellcodezeile des Elements zugeordnet ist. Der folgende Code erzeugt beispielsweise einen Fehler:

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
var seqNum = 1;
builder.OpenElement(seqNum, "div");
builder.CloseElement();

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, stellen Sie sicher, dass Aufrufe von Methoden der RenderTreeBuilder-Klasse, die eine Sequenznummer als Parameter verwenden, eine literale Sequenznummer nutzen.

using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "div");
builder.CloseElement();

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel. Die Verwendung einer nicht literalen Sequenznummer kann zu Leistungseinbußen führen.