次の方法で共有


ASP0006: リテラル以外のシーケンス番号を使用しない

価値
ルール識別子 ASP0006
カテゴリ Usage
修正が破壊的であるか非破壊的であるか Non-breaking

原因

パラメーターとしてリテラルではないシーケンス番号を含む RenderTreeBuilder 内のメソッドに対する呼び出し。

ルールの説明

Blazorの UI 差分アルゴリズムは、どの要素が変更されたかを判断するためにシーケンス番号に依存します。 シーケンス番号を動的に計算したり、カウンターを使用したりすると、差分パフォーマンスが低下する可能性があります。 代わりに、要素のソース コード行にマップされるリテラル シーケンス番号を使用します。 たとえば、次のコードではエラーが発生します。

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

違反を修正する方法

この規則違反を修正するには、パラメーターとしてシーケンス番号を受け取る RenderTreeBuilder クラスのメソッドの呼び出しでリテラル シーケンス番号が使用されていることを確認します。

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

警告を抑制するタイミング

このルールからの警告を抑制 しないでください 。 リテラル以外のシーケンス番号を使用すると、パフォーマンスが低下する可能性があります。