Razor 隱含運算式 (@p.Name) 解析演算法精確定義了何種字元序列屬於運算式。本文詳述解析規則與合法/非法形式對照。
p)。( 或 [?是 → 讀取至匹配 )/] → 回步驟 2。.?是 → 讀取 . 並要求後續為合法識別符起始 → 回步驟 1。否則 → 結束運算式。@p.Name
@p.Name.ToString()
@p.Name.ToString()[6 - 2]
@p.Name.Replace("ASPX", "Razor")[i++]
特點:識別符 + 任意數量方法呼叫/索引/成員存取,**運算式內不允許空白字元** (括號/括弧內除外)。
@p .Name // 空白導致結束
@p.Name .ToString()
@p.Name ( ) // 空白
@p.Name[ 0 ] // 空白
@(p.Name.ToString()),括號內允許任意空白與完整 C# 語法。隱含運算式以「識別符 + 無空白鏈式存取」為核心規則,兼顧簡潔與解析確定性;超出範圍改用顯式運算式即可。