Влияние Авто выглядит очень незначительным. (Хотя, очевидно, больше, чем Никогда ).
Если мы рассмотрим код в System.Web.UI.TemplateParser , мы увидим в ImportSourceFile
, что процесс прерывается раньше, если для режима установлено значение Never
:
if (this.CompilationMode == CompilationMode.Never)
{
return null;
}
Что, конечно, полезно и, безусловно, оказывает наименьшее влияние. Однако, продолжая процедуру в TemplateParser
, мы можем видеть в ParseStringInternal
, что парсер буквально сканирует загруженный шаблон в поисках вариантов <%
:
if (!this.flags[2] && (match = BaseParser.aspCodeRegex.Match(text, startat)).Success)
{
string str3 = match.Groups["code"].Value.Trim();
if (str3.StartsWith("$", StringComparison.Ordinal))
{
this.ProcessError(SR.GetString("ExpressionBuilder_LiteralExpressionsNotAllowed", new object[] { match.ToString(), str3 }));
}
else
{
this.ProcessCodeBlock(match, CodeBlockType.Code, text);
}
}
Обратите внимание на BaseParser.aspCodeRegex
, который является экземпляром этого шаблона:
public AspCodeRegex()
{
base.pattern = @"\G<%(?!@)(?<code>.*?)%>";
...
}
Если он не встречает ничего, он просто движется дальше. Поиск является довольно недорогой операцией - самый большой удар - это когда блоки кода на самом деле найдены и скомпилированы.