Start Debugging

Tag: csharp

335 posts · Página2de34

Como descartar teclas em buffer antes de Console.ReadKey em um loop de jogo de console em C#
Esvazie o buffer de entrada do console com while (Console.KeyAvailable) Console.ReadKey(true) antes de aguardar uma nova tecla, e esvazie-o a cada frame em um loop de jogo para que a repetição de teclas não se acumule. Como o buffer funciona no Windows e no Unix no .NET 10, por que teclas mantidas pressionadas causam atraso, a armadilha do eco no Unix e FlushConsoleInputBuffer.
Como casar parênteses aninhados e tags balanceadas com balancing groups no Regex do .NET
Balancing groups (?<name>) e (?<-name>) transformam um grupo de captura do Regex do .NET em uma pilha, então um único padrão consegue casar parênteses ou tags <div> aninhados em qualquer profundidade. O padrão completo, como a pilha funciona, a captura do conteúdo interno com (?<inner-open>) e as armadilhas verificadas no .NET 11 RC1: a checagem de pilha vazia, backtracking catastrófico, NonBacktracking e tipos de colchetes misturados.
O que é o layout transparente de struct, e por que um struct wrapper de campo único muda a convenção de chamada no .NET?
Um struct transparente é aquele que a ABI trata exatamente como seu único campo. O .NET 11 não oferece essa garantia: um struct que encapsula um double é passado em RCX no Windows x64, mas em XMM0 no Linux e no macOS. Veja o disassembly do JIT do .NET 11 em três ABIs, os bugs de P/Invoke que isso causa e como escrever tipos wrapper seguros em qualquer fronteira.
Anterior Próximo