📊 Capítulo 07: Strings, StringBuilder & Regex
Especialização em Sistemas com C#
🗺️ O Revolucionário Regex Source Generator do .NET 8 (Zero Parsing em Runtime!)
flowchart TD
subgraph LEGACY ["Regex Clássico (Compilado em Runtime)"]
R1["new Regex('^[a-z0-9]+$')\n(Faz parsing do padrão e gera código IL em tempo de execução!\nCausa pico de latência na inicialização!) 🚨"]
end
subgraph GEN ["GeneratedRegex do .NET 8 (Compile-Time Source Generator)"]
G1["[GeneratedRegex('^[a-z0-9]+$', RegexOptions.IgnoreCase)]\nprivate static partial Regex MeuValidador();\n(O Roslyn gera o código C# da máquina de estados durante o 'dotnet build'!\nZero alocações de memória! Velocidade nativa de loop C puríssimo!) ⚡"]
end
LEGACY -.-> |".NET 7/8"| GEN
style LEGACY fill:#ffebee,stroke:#d32f2f,stroke-width:2px
style GEN fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Imutabilidade e String Interning
-
Em C#, strings são 100% imutáveis.
- O CLR mantém uma tabela interna de strings literais (String Intern Pool). Fazer
str += "x"repetidamente em loops aloca um novo bloco de memória no Heap a cada iteração!
🎯 Slide 2: Concatenações em Massa com StringBuilder
var sb = new StringBuilder(capacidadeInicial: 1024);
for (int i = 0; i < 1000; i++)
{
sb.Append("Registro ").Append(i).AppendLine(";");
}
string relatorio = sb.ToString();
🎯 Slide 3: Raw String Literals (C# 11+)
string json = """
{
"usuario": "administrador",
"permissoes": ["read", "write"]
}
""";
- Suporta aspas duplas internas e múltiplas linhas sem necessidade de caracteres de escape
\"!
🔗 Navegação do Capítulo 07
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim