C# 7.3 – fixed e seus novos tipos

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