C# puntatori

C# puntatori
In C#, i puntatori sono assegnati per una programmazione non comune e avanzata; vengono normalmente utilizzati quando interagiscono con il framework com. I suggerimenti sono supportati solo in misura limitata in C#. I tipi di puntatore, a differenza dei tipi di riferimento, non sono monitorati dal processo di raccolta dei rifiuti predefiniti. I puntatori possono solo indicare tipi non gestiti che includono tutti i tipi di enum fondamentali, i tipi di dati, altri tipi di punta e le strutture che includono solo tipi non gestiti. L'articolo ti dimostrerà adeguatamente sui suggerimenti C#.

Cosa sono i suggerimenti in C# in Ubuntu 20.04?

I puntatori vengono utilizzati per allocare dinamicamente la memoria. Possiamo dire che un puntatore è una variabile che contiene l'indirizzo di una posizione di memoria. Ci sono due parti per ogni variabile specificata in un programma:

  1. Indirizzo variabile.
  2. Valore variabile memorizzato.

Quando una dichiarazione in C# viene dichiarata non sicura con la parola chiave non sicura, vengono utilizzati i puntatori. Queste dichiarazioni, che utilizzano le variabili del puntatore, non sono controllate da collezionisti di immondizia.

Fare una dichiarazione di puntatori in C# in Ubuntu 20.04

Lo script successivo è la sintassi generale di come dichiarare un tipo di punta:

tipo *variabile_name;
int* p;

L'operatore di dereference è indicato dal simbolo dell'asterisco (*). Il valore dall'indirizzo a cui viene acquisito i riferimenti puntatore utilizzando l'operatore Dereference. Dichiara "P", una variabile puntatore che trasporta un indirizzo di tipo int. Si noti che quando una funzione del blocco di codice è designata con il modificatore non sicuro, C# consente di utilizzare le variabili del puntatore. Un blocco di codice in cui viene dichiarata una variabile puntatore è noto come codice non sicuro o codice non gestito. In Ubuntu 20.04, dobbiamo compilare un codice non sicuro come questo: CS /FileName non sicuro.cs

Come usare i puntatori in C# in Ubuntu 20.04

La parola chiave non sicura può essere utilizzata in molti modi. Può essere utilizzato per modificare un metodo, una proprietà, un costruttore e così via. Per una migliore comprensione di come i puntatori sono dichiarati nel linguaggio di programmazione C#, considera i seguenti esempi:

Esempio n. 1: usando i puntatori per la dichiarazione in C # in Ubuntu 20.04

La seguente illustrazione dimostra come dichiarare e utilizzare una variabile puntatore. Qui, abbiamo utilizzato il modificatore non sicuro. Il segno * viene utilizzato per dichiarare implicitamente i puntatori, come nell'esempio dato:

Il codice inizia con l'importazione dei file di utilizzo e dello spazio dei nomi. Il file dello spazio dei nomi ha assegnato il nome "csharpointers". Il file dello spazio dei nomi ha un blocco in cui abbiamo definito una classe "Program1". Nella classe "Program1", abbiamo parole chiave non sicure utilizzate con la funzione principale. La parola chiave non sicura ci consente di utilizzare i codici non sicuri in C#. Quindi, abbiamo dichiarato due variabili nella funzione principale non sicura. Alla prima variabile viene assegnato un nome "valore" e imposta il suo tipo su int. Il "valore" variabile è un valore intero. La seconda variabile è rappresentata come "v" di tipo int con il simbolo asterisco (*) in modo che sia una variabile puntatore di tipo intero. La variabile puntatore ha l'operatore dell'indirizzo (&) utilizzato con la variabile "valore". Come puntatore, restituirà l'indirizzo del valore. L'istruzione WriteLine stamperà il valore e l'indirizzo delle variabili specificate.

Abbiamo ottenuto il seguente output dall'esecuzione del codice sopra. Il valore e l'indirizzo sono mostrati nell'immagine.

Esempio n. 2: usando i puntatori per accedere agli array in C # in Ubuntu 20.04

Un array è un insieme di dati dello stesso tipo che si distinguono solo per il loro ordine di archiviazione. Nel seguente programma C#, si accede agli array utilizzando le notazioni del puntatore.

Il codice è dimostrato in cui abbiamo definito la classe nel file dello spazio dei nomi "POPERPROGRAM". La classe ha assegnato un nome "Program2" e abbiamo chiamato la funzione principale con un modificatore non sicuro. Nella funzione principale non sicura, abbiamo creato un array di riferimento di tipo int come "MyArray". Abbiamo memorizzato cinque valori diversi in un array. Quindi, abbiamo creato una "PTR" variabile con notazione puntatore. La variabile puntatore ha memorizzato un array e abbiamo bloccato la variabile del puntatore con la parola chiave "fissa". La parola chiave "fissa" limita la variabile dell'array a un'allocazione di memoria specifica. L'istruzione WriteLine viene utilizzata per visualizzare l'indirizzo di memoria dell'array e il valore del tipo di dati.

Come puoi vedere, ogni elemento nell'array, così come il suo indirizzo, viene visualizzato nell'output del codice sopra.

Esempio n. 3: usando i puntatori nelle strutture in C # in Ubuntu 20.04

In C#, i tipi di valore sono gli unici componenti delle strutture. I puntatori vengono utilizzati solo nelle strutture in cui i membri primari sono tutti tipi di valore. I puntatori sono utilizzati per accedere ai membri della struttura nel seguente programma scritto in C#.

Il codice di cui sopra ha una struttura definita come "dipendente" e nella struttura, abbiamo impostato i suoi membri "empid" di tipo int e "empsalary" di tipo proprietà doppia. Abbiamo anche costruito il costruttore per la struttura "dipendente" per inizializzare i valori per "empid" e "empsalary" come "x" e "y". Quindi, abbiamo creato una classe "Program3" che ha la funzione principale. Nella funzione principale, abbiamo un'etichetta non sicura che non avrebbe bisogno di utilizzare l'istruzione non sicura per incapsulare le variabili di punta. I valori sono impostati per i membri "empid" e "empsalary" nell'oggetto "E1". Il puntatore viene creato per la struttura "dipendente" come "e1_ptr" e lo inizializza con l'indirizzo di "E1".

L'istruzione WriteLine viene utilizzata per visualizzare i dettagli di "dipendente" della struttura forniti. Abbiamo usato un operatore di freccia con i puntatori che accedevano alle variabili e ai metodi della struttura specificata.

L'esecuzione del programma di cui sopra ha il seguente output mostrato sullo schermo del terminale.

Esempio # 4: usando i puntatori nei metodi in C # in Ubuntu 20.04

Un puntatore può essere restituito anche con i metodi. L'esempio mostrato di seguito ha superato i puntatori come parametro a un metodo.

Abbiamo una classe definita come "Program4" nel file dello spazio dei nomi. La classe ha una funzione principale come "metodo" in cui abbiamo usato l'etichetta "non sicura". Abbiamo dichiarato una variabile "A1" e "A2" nel blocco non sicuro. Queste variabili sono inizializzate con i valori interi. Abbiamo creato due puntatori come "ptr1" e "ptr2" di tipo int. Ora, questi puntatori sono chiamati variabili puntatori interi. Abbiamo dato l'indirizzo delle variabili "A1" e "A2" a questi suggerimenti. Il metodo WriteLine è chiamato che visualizzerà il valore e l'indirizzo delle variabili fornite. Quindi, abbiamo un'altra "demo" di classe in cui dobbiamo dichiarare un oggetto "P" per la classe "Programma4". Il "metodo" è invocato in questa classe per accedere al valore e all'indirizzo del suo membro nella classe "Demo".

Ottiamo l'output successivo sulla console dopo aver compilato il codice sopra.

Conclusione

Siamo giunti alla fine dell'articolo scoprendo che i puntatori che mostrano l'indirizzo di memoria vengono eseguiti utilizzando un set di dichiarazioni non sicuro. Il codice non sicuro è necessario perché il Garbage Collector non mantiene le posizioni di memoria in un ambiente non gestito. Abbiamo imparato i modi di utilizzare puntatori in metodi, strutture e accedere alla serie di elementi attraverso le diverse illustrazioni.