Codice unsafe e puntatori (Guida per programmatori C#)
Aggiornamento: novembre 2007
Per garantire la sicurezza e assicurare l'indipendenza dai tipi, per impostazione predefinita in C# non è supportata l'aritmetica dei puntatori. Tuttavia, utilizzando la parola chiave unsafe, è possibile definire un contesto unsafe in cui utilizzare i puntatori. Per ulteriori informazioni sui puntatori, vedere l'argomento Tipi di puntatori.
Nota: |
---|
Nell'ambiente Common Language Runtime (CLR) il codice unsafe viene indicato come codice non verificabile. In C# il codice unsafe non è necessariamente pericoloso. Si tratta semplicemente di un codice che non può essere sottoposto a un controllo di sicurezza da parte di CLR. Quest'ultimo, pertanto, eseguirà soltanto codice unsafe contenuto all'interno di un assembly completamente attendibile. Se si utilizza codice unsafe, è responsabilità del programmatore garantire che tale codice non introduca problemi di protezione o errori di puntatore. Per ulteriori informazioni, vedere Protezione (Guida per programmatori C#). |
Cenni preliminari sul codice unsafe
Di seguito sono elencate le proprietà del codice unsafe:
I metodi, i tipi e i blocchi di codice possono essere definiti come unsafe.
In alcuni casi, il codice unsafe può migliorare le prestazioni di un'applicazione grazie alla rimozione dei controlli sui limiti delle matrici.
Il codice unsafe è necessario quando si chiamano funzioni native che richiedono puntatori.
L'utilizzo di codice unsafe introduce problemi di protezione e di stabilità.
Per compilare codice unsafe in C#, è necessario compilare l'applicazione con l'opzione /unsafe.
Sezioni correlate
Per ulteriori informazioni, vedere:
Procedura: utilizzare puntatori per copiare una matrice di byte (Guida per programmatori C#)
Procedura: utilizzare la funzione ReadFile di Windows (Guida per programmatori C#)
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere le seguenti sezioni in Specifiche del linguaggio C#:
18 Codice unsafe
B.3 Estensioni della grammatica per il codice unsafe