C# 7.3 parte 1 – C# 7.3 – Fixed Sized Buffers e Safe Context
C# 7.3 parte 2 – C# 7.3 – Reatribuir variável ref local
C# 7.3 parte 3 – C# 7.3 – Arrays stackalloc, agora podem ser inicializados
Olá Sharpers!
Continuando a série de atualizações, vou falar sobre os novos tipos suportados pelo fixed statement.
Vou recapitular o que são contexto unsafe e fixed statement. Basicamente unsafe permite que “coisas” acessem a memória de formas não gerenciáveis e fixed te garante que aquele determinado local na memória não sera movido da memória.(pode verificar no post que falei sobre isso, o link está no topo desse post).
Os novos tipos permitidos de fixed
Essa atualização é um complemento de outra, onde agora é permitido indexar buffers de tamanho fixo em um contexto seguro(safe). A partir desse cenário, agora a quantidade de tipos suportadas é maior. Antes da 7.3 os tipos permitidos eram os primitivos por conta do acesso direto a memória, são eles:
- bool;
- byte;
- char;
- double;
- float;
- int;
- long;
- sbyte;
- short;
- ulong;
- ushort;
Agora pode ser usado qualquer tipo que implemente o método GetPinnableReference(isso ainda não consegui compreender).
Um grande abraço e até o próximo post!
Vou deixar os links que usei para compreender essa nova feature:
Merge pull request #1343 from dotnet/MovableFixed
Allow indexing fixed fields in movable contexts without pinning.
Fixed Sized Buffers