C# Ponteiros

C# Ponteiros
Em C#, os ponteiros são alocados para programação incomum e avançada; Eles são normalmente usados ​​ao interagir com a estrutura COM. Os ponteiros são suportados apenas em uma extensão limitada em C#. Os tipos de ponteiro, diferentemente dos tipos de referência, não são monitorados pelo processo de coleta de lixo padrão. Ponteiros só podem apontar para tipos não gerenciados que incluem todos os tipos fundamentais de enumeração, tipos de dados, outros tipos de ponteiro e estruturas que incluem apenas tipos não gerenciados. O artigo demonstrará adequadamente a você sobre C# Pointers.

O que são dicas em C# no Ubuntu 20.04?

Os ponteiros são utilizados para alocar dinamicamente a memória. Podemos dizer que um ponteiro é uma variável que mantém o endereço de um local de memória. Existem duas partes em todas as variáveis ​​especificadas em um programa:

  1. Endereço variável.
  2. Valor variável armazenado.

Quando uma declaração em C# é declarada como insegura com a palavra -chave insegura, os ponteiros são usados. Essas declarações, que fazem uso de variáveis ​​de ponteiro, não são controladas por coletores de lixo.

Fazendo declaração de ponteiros em C# no Ubuntu 20.04

O script subsequente é a sintaxe geral de como declarar um tipo de ponteiro:

tipo *variable_name;
int* p;

O operador de dereferência é indicado pelo símbolo de asterisco (*). O valor do endereço para o qual referências de ponteiro é adquirido usando o operador de dereferência. Declara “P”, uma variável de ponteiro que carrega o endereço de um tipo INT. Observe que quando uma função do bloco de código é designada com o modificador inseguro, C# permite que as variáveis ​​do ponteiro sejam usadas. Um bloco de código em que uma variável de ponteiro é declarada é conhecida como código inseguro ou código não gerenciado. No Ubuntu 20.04, temos que compilar código inseguro como este: nome do arquivo cs /inseguro.cs

Como usar ponteiros em C# no Ubuntu 20.04

A palavra -chave insegura pode ser usada de várias maneiras. Pode ser usado para modificar um método, propriedade, construtor e assim por diante. Para uma melhor compreensão de como as dicas são declaradas na linguagem de programação C#, considere os seguintes exemplos:

Exemplo # 1: Usando ponteiros para declaração em C # no Ubuntu 20.04

A ilustração a seguir demonstra como declarar e utilizar uma variável de ponteiro. Aqui, utilizamos o modificador inseguro. A placa * é usada para declarar indicadores implicitamente, como no exemplo dado:

O código começa com a importação dos arquivos de uso e namespace. O arquivo de namespace atribuiu o nome "CSharpPointers". O arquivo namespace possui um bloco no qual definimos uma classe “Program1”. Na classe “Program1”, temos palavras -chave inseguras usadas com a função principal. A palavra -chave insegura nos permite usar códigos inseguros apenas em C#. Então, declaramos duas variáveis ​​na função principal insegura. A primeira variável recebe um nome "valor" e define seu tipo como int. A variável "valor" é um valor inteiro. A segunda variável é representada como "V" do tipo int com o símbolo de asterisco (*), por isso é uma variável de ponteiro do tipo inteiro. A variável de ponteiro possui o operador de endereço (&) usado com a variável "valor". Como ponteiro, ele retornará o endereço do valor. A instrução Writeline imprimirá o valor e o endereço das variáveis ​​especificadas.

Temos a seguinte saída da execução do código acima. O valor e o endereço são mostrados na imagem.

Exemplo # 2: Usando ponteiros para acessar matrizes em C # no Ubuntu 20.04

Uma matriz é um conjunto de dados do mesmo tipo que só se distinguem por sua ordem de armazenamento. No programa C# seguinte, as matrizes são acessadas usando notações de ponteiro.

O código é demonstrado onde definimos a classe no arquivo de namespace "Pointerprogram". A classe atribuiu um nome "Program2" e chamamos a função principal com um modificador inseguro. Na função principal insegura, criamos uma matriz de referência do tipo int como "MyArray". Nós armazenamos cinco valores diferentes em uma matriz. Então, criamos uma variável "PTR" com notação de ponteiro. A variável de ponteiro armazenou uma matriz e fixamos a variável de ponteiro com a palavra -chave "corrigida". A palavra -chave "fixa" limita a variável da matriz a uma alocação de memória específica. A instrução Writeline é usada para exibir o endereço de memória da matriz e o valor do tipo de dados.

Como você pode ver, todos os elementos da matriz, bem como seu endereço, são exibidos na saída do código acima.

Exemplo # 3: Usando ponteiros em estruturas em C # no Ubuntu 20.04

Em C#, os tipos de valor são os únicos componentes das estruturas. Ponteiros são usados ​​apenas em estruturas onde os membros primários são todos os tipos de valor. Ponteiros são utilizados para acessar os membros da estrutura no programa a seguir escrito em C#.

O código acima possui uma estrutura definida como "funcionário" e, na estrutura, definimos seus membros "empid" do tipo int e "Empsalário" da propriedade Tipo Double Double. Também construímos o construtor para a estrutura "funcionário" inicializar valores para "empid" e "empalário" como "x" e "y". Em seguida, criamos uma classe “Program3” que tem a função principal. Na função principal, temos um rótulo inseguro que não precisaria usar a declaração insegura para encapsular as variáveis ​​do ponteiro ou qualquer outra coisa conectada a ela, porque a declaração de função fará a si mesma. Os valores são definidos para os membros "Empid" e "Empsalary" no objeto "E1". O ponteiro é criado para a estrutura "funcionário" como "e1_ptr" e inicializa com o endereço de "E1".

A declaração WriteLine é usada para exibir os detalhes da estrutura fornecida. Usamos um operador de seta com os ponteiros que acessavam as variáveis ​​e métodos da estrutura especificada.

A execução do programa acima tem a seguinte saída mostrada na tela do terminal.

Exemplo # 4: Usando ponteiros em métodos em C # no Ubuntu 20.04

Um ponteiro pode ser devolvido pelos métodos também. O exemplo mostrado abaixo passou os ponteiros como um parâmetro para um método.

Temos uma classe definida como "Program4" no arquivo namespace. A classe tem uma função principal como "método" no qual usamos o rótulo "inseguro". Declaramos uma variável "A1" e "A2" no bloco inseguro. Essas variáveis ​​são inicializadas com os valores inteiros. Criamos dois ponteiros como "ptr1" e "ptr2" do tipo INT. Agora, esses ponteiros são chamados de variáveis ​​de ponteiro inteiro. Demos o endereço das variáveis ​​"A1" e "A2" para esses ponteiros. O método Writeline é chamado, que exibirá o valor e o endereço das variáveis ​​fornecidas. Em seguida, temos outra classe "Demo", onde temos que declarar um objeto "P" para a classe "Program4". O "método" é invocado nesta classe para acessar o valor e o endereço de seu membro na classe "Demo".

Obtemos a saída subsequente no console depois de compilar o código acima.

Conclusão

Chegamos ao final do artigo descobrindo que os ponteiros que exibem o endereço de memória são executados usando um conjunto inseguro de declarações. O código inseguro é necessário porque o coletor de lixo não mantém os locais de memória em um ambiente não gerenciado. Aprendemos as maneiras de usar ponteiros em métodos, estruturas e acessar a variedade de elementos através das diferentes ilustrações.