ASP0006:請勿使用非常值序號

規則識別碼 ASP0006
類別 使用方式
修正程式是中斷或非中斷 不中斷

原因

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();

隱藏警告的時機

隱藏此規則的警告。 使用非常值序號可能會導致效能降低。