2026-05-25 comparisoncsharpdotnet List<T> vs Span<T> vs ReadOnlySpan<T> em C#: quando usar cada um Escolha List<T> para coleções expansíveis, Span<T> para visualizações mutáveis e ReadOnlySpan<T> para leitura. Entenda duração e limites de async.
2026-05-25 comparisoncsharpdotnet Parallel.ForEach vs Parallel.ForEachAsync vs Task.WhenAll em C# Use Parallel.ForEach para trabalho intensivo de CPU sobre dados em memória, Parallel.ForEachAsync para E/S assíncrona sobre muitos itens com um limite de concorrência, e Task.WhenAll para um fan-out fixo e pequeno em que você quer todas as operações em andamento e precisa dos resultados.
2026-05-25 dotnet-11comparisoncsharp StringBuilder vs interpolação de strings no .NET 11: qual você deve usar? Use a interpolação de strings para compor de uma vez só um conjunto fixo de valores; use StringBuilder quando você anexa em um laço ou sobre um número desconhecido de fragmentos. A linha divisória é o laço, não a quantidade de valores.
2026-05-24 dotnet-11aspnetcoreopenapi ASP.NET Core no .NET 11 Preview 4 ensina o metodo HTTP QUERY ao OpenAPI O .NET 11 Preview 4 faz a geracao de OpenAPI no ASP.NET Core reconhecer o HTTP QUERY como uma operacao de primeira classe no OpenAPI 3.2, com um fallback elegante para documentos 3.0 e 3.1.
2026-05-24 comparisoncsharpdotnet lock vs Monitor vs SemaphoreSlim vs System.Threading.Lock em C# Quatro formas de proteger uma seção crítica em C#, e uma matriz de decisão para escolher uma. Use System.Threading.Lock para exclusão mútua síncrona no .NET 9+, SemaphoreSlim quando a seção atravessa um await, e Monitor apenas quando você precisa de Wait/Pulse.
2026-05-24 comparisonpollyresilience Polly vs. resilience handlers no .NET 11: qual você deveria usar? Use o resilience handler do Microsoft.Extensions.Http.Resilience para chamadas com HttpClient, pois ele é o Polly com padrões que entendem HTTP e telemetria em uma única linha. Recorra ao ResiliencePipeline do Polly diretamente apenas quando proteger algo que não seja um HttpClient.
2026-05-24 comparisoncsharpdotnet Task.Run vs Task.Factory.StartNew vs ThreadPool.QueueUserWorkItem Três formas de enviar trabalho para o thread pool em C# e qual escolher. Use Task.Run para quase tudo, ThreadPool.QueueUserWorkItem<TState> para fire-and-forget sem alocação, e Task.Factory.StartNew apenas para LongRunning ou um agendador personalizado.
2026-05-23 dotnet-11csharpperformance .NET 11 adiciona compressão Deflate e GZip sem alocações O .NET 11 Preview 4 traz DeflateEncoder, GZipEncoder e ZLibEncoder mais os decodificadores correspondentes, para comprimir direto em um Span<byte> com OperationStatus, sem precisar de um Stream.
2026-05-23 comparisonef-coredapper Consultas compiladas do EF Core vs SQL bruto vs Dapper: qual vence no caminho de leitura? Para caminhos com muitas leituras no .NET 11, EF Core puro com AsNoTracking fica dentro de ~5% do Dapper. Use consultas compiladas em um caminho quente de linha unica perfilado, e Dapper apenas para a menor latencia ou para o SQL que o LINQ nao consegue expressar.
2026-05-23 comparisonhttpclienthttpclientfactory HttpClient vs HttpClientFactory vs Refit: qual usar no .NET 11? Nunca crie um HttpClient por requisição. Use IHttpClientFactory para gerenciar o ciclo de vida e adicione Refit por cima quando quiser uma interface tipada em vez de escrever o código de requisição na mão. Um HttpClient singleton puro só serve para os casos mais simples.