Il miglior tutorial C # codice non sicuro Nel 2024, in questo tutorial puoi imparare variabile puntatore,Recupero di valori di dati utilizzando un puntatore,Passando un puntatore come un metodo parametro,Utilizzare i puntatori per accedere agli elementi dell'array,Compilare il codice non sicuro,
Quando un blocco di codice utilizzando il tag modificatorepericoloso, C # consente l'utilizzo di variabile puntatore nella funzione.codice non sicuro o il codice non gestito è l'uso di una variabile codicepuntatoredel blocco.
Un puntatore è un valore di indirizzo di un'altra variabile, vale a dire, l'indirizzo diretto della locazione di memoria.Come altre variabili o costanti, è necessario utilizzare il puntatore prima di altre memorie variabile dichiarazione di puntatore indirizzo.
La forma generale di una dichiarazione di variabile puntatore è:
Tipo * var-name;
Quanto segue è una dichiarazione puntatore valido:
int * ip; / * punti per un intero * / doppia * dp; / * puntatore a un numero a precisione doppia * / float * fp; / * puntatore a un float * / char * ch / * puntatore a un char * /
L'esempio seguente illustra l'uso del C # utilizzando il modificatorenon sicuri quando il puntatore:
using System; namespace UnsafeCodeApplication { Programma di classe { static non sicuro void Main (string [] args) { int var = 20; int * p = & var; Console.WriteLine ( "I dati sono: {0}", var); Console.WriteLine ( "Address è: {0}", (int) p); Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Dati è: 20 Indirizzo è: 99.215.364
Non è possibile dichiarare l'intero metodo come codice non sicuro, solo una parte della necessità di dichiarare il metodo come codice non sicuro. L'esempio che segue illustra questo punto.
È possibile utilizzare il metodoToString () dei dati di posizione di riferimento memorizzati in un recupero variabili puntatore.L'esempio che segue illustra questo punto:
using System; namespace UnsafeCodeApplication { Programma di classe { public static void Main () { pericoloso { int var = 20; int * p = & var; Console.WriteLine ( "I dati sono: {0}", var); Console.WriteLine ( "I dati sono: {0}", p-> ToString ()); Console.WriteLine ( "Address è: {0}", (int) p); } Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Dati è: 20 Dati è: 20 Indirizzo è: 77.128.984
È possibile passare una variabile puntatore come un parametro al metodo di approccio. L'esempio che segue illustra questo punto:
using System; namespace UnsafeCodeApplication { classe TestPointer { pubblico non sicuro void swap (int * p, q int *) { int temp = * p; * P = * q; * Q = temperatura; } static void pericoloso pubblico principale () { TestPointer p = new TestPointer (); int var1 = 10; int var2 = 20; int * x = & var1; int * y = & var2; Console.WriteLine ( "Prima Swap: var1: {0}, var2: {1}", var1, var2); p.swap (x, y); Console.WriteLine ( "Dopo Swap: var1: {0}, var2: {1}", var1, var2); Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Prima Swap: var1: 10, var2: 20 Dopo Swap: var1: 20, var2: 10
In C #, il nome della matrice e un puntatore ai dati di matrice con lo stesso tipo di dati è un puntatore a un diverso tipo di variabile. Ad esempio, int * p e int [] p è un tipo diverso. È possibile aumentare la variabile puntatore p, perché non è fisso nella memoria, ma l'indirizzo della matrice è fissa nella memoria, quindi non è possibile aggiungere una matrice p.
Quindi, se avete bisogno di utilizzare le variabili puntatore per accedere ai dati di matrice, come siamo soliti fare in C o C ++ come parole chiave da usare puntatore fissofisso.
L'esempio che segue illustra questo punto:
using System; namespace UnsafeCodeApplication { classe TestPointer { static void pericoloso pubblico principale () { int list [] = {10, 100, 200}; fissa (int * ptr = lista) / * Visualizza puntatore indirizzo di matrice * / for (int i = 0; i <3; i ++) { Console.WriteLine ( "Indirizzo di lista [{0}] = {1}", i, (int) (PTR + i)); Console.WriteLine ( "Valore della lista [{0}] = {1}", i, * (PTR + i)); } Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Indirizzo di lista [0] = 31.627.168 Valore della lista [0] = 10 Indirizzo di lista [1] = 31.627.172 Valore della lista [1] = 100 Indirizzo di lista [2] = 31.627.176 Valore della lista [2] = 200
Al fine di compilare il codice non sicuro, è necessario passare alla riga di comando del compilatore specificare la riga di comando/ non sicuro.
Ad esempio, per compilare un programma chiamato prog1.cs contengono codice non sicuro, immettere il comando nella riga di comando:
CSC / prog1.cs non sicure
Se si utilizza Visual Studio IDE, è necessario attivare il codice insicuro nelle proprietà del progetto.
Procedere come segue: