Operador sizeof

Definição - O que significa Sizeof Operator?

Operador Sizeof, em C #, é um operador usado para determinar o tamanho (em bytes) de um tipo não gerenciado que não é um tipo de referência.

Ao desenvolver aplicativos que envolvem alocação de memória dinâmica, é muito comum encontrar a memória alocada para um tipo. É muito perigoso assumir o tamanho de um tipo e usar o valor codificado no aplicativo, pois isso pode interromper o aplicativo quando transferido para sistemas diferentes. O operador sizeof é usado nesses casos para encontrar o tamanho de um tipo de dados composto como uma estrutura. No entanto, ele só pode ser usado para calcular o tamanho do byte de tipos de valor e não para tipos de referência devido ao sistema de layout de tipo virtualizado da estrutura .NET.

O operador sizeof ajuda na alocação de memória para estruturas de dados que são passadas de aplicativo gerenciado para código não gerenciado como Interop, serialização personalizada, etc. Operadores de incremento e decremento, que operam em ponteiros, usam o operador sizeof internamente para aumentar ou diminuir o endereço contido em uma variável de ponteiro por um valor igual ao número de bytes ocupados pelo tipo de ponteiro. O operador sizeof ajuda a melhorar a legibilidade do código.

Definirtec explica Sizeof Operator

O operador sizeof é um operador unário que recebe um parâmetro único e é usado com a palavra-chave "sizeof". Em contraste com C ++, o operador sizeof é uma construção em tempo de compilação, portanto, o parâmetro deve ser um tipo fechado conhecido durante a compilação, não variáveis. O parâmetro também pode ser um enum, um ponteiro ou uma estrutura definida pelo usuário sem nenhum campo ou propriedades de tipo de referência. Para certos tipos predefinidos, o operador sizeof retorna um valor constante, enquanto seu uso com os tipos restantes resulta em valores com base na implementação.

Por exemplo, quando o operador sizeof é executado com inteiro (int) como parâmetro, ele sempre retorna o número quatro para indicar que uma variável do tipo inteiro ocupa quatro bytes de memória.

Quando o operador sizeof é aplicado a um operando do tipo struct, ele busca o número total de bytes ocupados por uma struct, que inclui os bytes de preenchimento usados ​​para seu alinhamento internamente. As diretrizes a serem seguidas ao usar o operador sizeof com struct incluem:

  • Deve ser chamado em um bloco inseguro
  • A variável de estrutura não deve conter um membro do tipo de referência
  • A estrutura não deve ser um tipo de valor genérico

Esta definição foi escrita no contexto de C #