Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo Marshal.Copy (Int32[], Int32, IntPtr, Int32)

Copia i dati da una matrice di valori interi con segno a 32 bit gestita e unidimensionale a un puntatore di memoria non gestita.

Spazio dei nomi:  System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)
public static void Copy(
	int[] source,
	int startIndex,
	IntPtr destination,
	int length
)

Parametri

source
Tipo: System.Int32[]
Matrice unidimensionale da cui copiare.
startIndex
Tipo: System.Int32
Indice in base zero nella matrice di origine in corrispondenza del quale inizia la copia.
destination
Tipo: System.IntPtr
Puntatore di memoria in cui copiare.
length
Tipo: System.Int32
Numero degli elementi di matrice da copiare.
EccezioneCondizione
ArgumentOutOfRangeException

startIndex e length non sono validi.

ArgumentNullException

startIndex o length è null.

È possibile utilizzare questo metodo per copiare un subset di una matrice unidimensionale gestita in una matrice di tipo C non gestita.

Nell'esempio seguente viene copiata una matrice nella memoria non gestita, quindi la matrice non gestita viene copiata nella memoria gestita.


using System;
using System.Runtime.InteropServices;

class Example
{

    static void Main()
    {
        // Create a managed array.
        int[] managedArray = { 1, 2, 3, 4 };

        // Initialize unmanged memory to hold the array.
        int size = Marshal.SizeOf(managedArray[0]) * managedArray.Length;

        IntPtr pnt = Marshal.AllocHGlobal(size);

        try
        {
            // Copy the array to unmanaged memory.
            Marshal.Copy(managedArray, 0, pnt, managedArray.Length);

            // Copy the unmanaged array back to another managed array.

            int[] managedArray2 = new int[managedArray.Length];

            Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);

            Console.WriteLine("The array was coppied to unmanaged memory and back.");

        }
        finally
        {
            // Free the unmanaged memory.
            Marshal.FreeHGlobal(pnt);
        }



    }

}


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8
  • SecurityCriticalAttribute 

    richiede l'attendibilità totale per il chiamante immediato. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.