Punteros C#

Punteros C#
En C#, los punteros se asignan para programación poco común y avanzada; normalmente se usan al interactuar con el marco COM. Los punteros solo son compatibles con una extensión limitada en C#. Los tipos de puntero, a diferencia de los tipos de referencia, no son monitoreados por el proceso de recolección de basura predeterminado. Los punteros solo pueden apuntar a tipos no administrados que incluyen todos los tipos de enumes fundamentales, tipos de datos, otros tipos de puntero y estructuras que solo incluyen tipos no administrados. El artículo te demostrará adecuadamente sobre C# Pointers.

¿Qué son los punteros en C# en Ubuntu 20?.04?

Los punteros se utilizan para asignar dinámicamente la memoria. Podemos decir que un puntero es una variable que contiene la dirección de una ubicación de memoria. Hay dos partes en cada variable especificada en un programa:

  1. Dirección variable.
  2. Valor variable almacenado.

Cuando una declaración en C# se declara insegura con la palabra clave insegura, se utilizan punteros. Estas declaraciones, que utilizan variables de puntero, no están controladas por los recolectores de basura.

Hacer la declaración de punteros en C# en Ubuntu 20.04

El script posterior es la sintaxis general de cómo declarar un tipo de puntero:

tipo *variable_name;
int* p;

El operador de deserencia se denota por el símbolo de asterisco (*). El valor de la dirección a la que se adquiere las referencias del puntero utilizando el operador Derference. Declara "P", una variable de puntero que lleva la dirección de un tipo int tipo. Tenga en cuenta que cuando se designa una función del bloque de código con el modificador inseguro, C# permite utilizar variables de puntero. Un bloque de código donde se declara una variable de puntero se conoce como código inseguro o código no administrado. En Ubuntu 20.04, tenemos que compilar un código inseguro como este: Cs /nombre de archivo inseguro.CS

Cómo usar punteros en C# en Ubuntu 20.04

La palabra clave insegura se puede usar de muchas maneras. Se puede utilizar para modificar un método, propiedad, constructor, etc. Para una mejor comprensión de cómo se declaran los punteros en el lenguaje de programación C#, considere los siguientes ejemplos:

Ejemplo # 1: Uso de punteros para la declaración en C # en Ubuntu 20.04

La siguiente ilustración demuestra cómo declarar y utilizar una variable de puntero. Aquí, hemos utilizado el modificador inseguro. El signo * se usa para declarar punteros implícitamente, como en el ejemplo dado:

El código comienza con la importación de los archivos de uso y espacio de nombres. El archivo del espacio de nombres ha asignado el nombre "csharppointers". El archivo del espacio de nombres tiene un bloque en el que hemos definido una clase "Programa1". En la clase "Program1", tenemos palabras clave inseguras utilizadas con la función principal. La palabra clave insegura nos permite usar códigos inseguros en C# solamente. Luego, hemos declarado dos variables en la función principal insegura. A la primera variable se le asigna un nombre "valor" y establece su tipo en int. La variable "valor" es un valor entero. La segunda variable se representa como "v" de tipo int con el símbolo de asterisco (*), por lo que es una variable de puntero de tipo entero. La variable de puntero tiene el operador de dirección (&) utilizado con la variable "valor". Como puntero, devolverá la dirección del valor. La instrucción WriteLine imprimirá el valor y la dirección de las variables especificadas.

Obtuvimos la siguiente salida de la ejecución de código anterior. El valor y la dirección se muestran en la imagen.

Ejemplo # 2: Uso de punteros para acceder a matrices en C # en Ubuntu 20.04

Una matriz es un conjunto de datos del mismo tipo que solo se distinguen por su orden de almacenamiento. En el siguiente programa C#, se accede a las matrices utilizando notaciones de puntero.

El código se demuestra dónde hemos definido la clase en el archivo del espacio de nombres "PointerProgram". La clase ha asignado un nombre "Program2" y hemos llamado a la función principal con un modificador inseguro. En la función principal insegura, hemos creado una matriz de referencia de tipo INT como "MyArray". Hemos almacenado cinco valores diferentes en una matriz. Entonces, hemos creado una variable "PTR" con notación de puntero. La variable del puntero ha almacenado una matriz y hemos fijado la variable del puntero con la palabra clave "fijada". La palabra clave "fija" limita la variable de la matriz a una asignación de memoria específica. La instrucción WriteLine se utiliza para mostrar la dirección de memoria de la matriz y el valor de tipo de datos.

Como puede ver, cada elemento en la matriz, así como su dirección, se muestra en la salida del código anterior.

Ejemplo # 3: Uso de punteros en estructuras en C # en Ubuntu 20.04

En C#, los tipos de valor son los únicos componentes de las estructuras. Los punteros solo se usan en estructuras donde los miembros principales son todos tipos de valor. Los punteros se utilizan para acceder a los miembros de Struct en el siguiente programa escrito en C#.

El código anterior tiene una estructura definida como "empleado" y en la estructura, hemos establecido a sus miembros "Empid" de tipo int y "empsalario" de propiedad de tipo doble. También hemos construido el constructor para la estructura "empleado" para inicializar los valores para "Empid" y "Empsalary" como "X" y "Y". Luego, creamos una clase "Program3" que tiene la función principal. En la función principal, tenemos una etiqueta insegura que no necesitaría usar la declaración insegura para encapsular las variables del puntero o cualquier otra cosa conectada a ella, porque la declaración de la función se hará sí misma. Los valores se establecen para los miembros "Empido" y "Empsalario" en el objeto "E1". El puntero se crea para la estructura "Empleado" como "E1_PTR" y lo inicializa con la dirección de "E1".

La declaración de escritura se utiliza para mostrar los detalles de la estructura dada "Empleado". Hemos utilizado un operador de flecha con los punteros que accedieron a las variables y métodos de la estructura especificada.

La ejecución del programa anterior tiene la siguiente salida que se muestra en la pantalla terminal.

Ejemplo # 4: Uso de punteros en métodos en C # en Ubuntu 20.04

Los métodos también pueden devolver un puntero. El ejemplo que se muestra a continuación ha pasado los punteros como parámetro a un método.

Tenemos una clase definida como "Program4" en el archivo del espacio de nombres. La clase tiene una función principal como "método" en el que hemos utilizado la etiqueta "insegura". Hemos declarado una variable "A1" y "A2" en el bloque inseguro. Estas variables se inicializan con los valores enteros. Hemos creado dos punteros como "PTR1" y "PTR2" de Tipo int. Ahora, estos punteros se llaman variables de puntero entero. Hemos dado la dirección de las variables "A1" y "A2" a estos punteros. Se llama al método de escritura que mostrará el valor y la dirección de las variables dadas. Luego, tenemos otra "demostración" de clase en la que tenemos que declarar un objeto "P" para la clase "Programa 4". El "método" se invoca en esta clase para acceder al valor y la dirección de su miembro en la clase "Demo".

Obtenemos la salida posterior en la consola después de compilar el código anterior.

Conclusión

Hemos llegado al final del artículo descubriendo que los punteros que muestran la dirección de memoria se ejecutan utilizando un conjunto inseguro de declaraciones. Se necesita el código inseguro porque el recolector de basura no mantiene ubicaciones de memoria en un entorno no administrado. Hemos aprendido las formas de usar punteros en métodos, estructuras y acceder a la variedad de elementos a través de las diferentes ilustraciones.