Marshal.Copy Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Copia dados de uma matriz gerenciada para um ponteiro de memória não gerenciado ou de um ponteiro de memória não gerenciado para uma matriz gerenciada.
Sobrecargas
| Nome | Description |
|---|---|
| Copy(Single[], Int32, IntPtr, Int32) |
Copia dados de uma matriz unidimensional de número de ponto flutuante de precisão única gerenciada para um ponteiro de memória não gerenciado. |
| Copy(IntPtr[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de IntPtr gerenciada unidimensional para um ponteiro de memória não gerenciado. |
| Copy(IntPtr, IntPtr[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de IntPtr gerenciada. |
| Copy(IntPtr, Int64[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 64 bits gerenciada. |
| Copy(IntPtr, Int32[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 32 bits gerenciada. |
| Copy(IntPtr, Int16[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 16 bits gerenciada. |
| Copy(IntPtr, Double[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de número de ponto flutuante de precisão dupla gerenciada. |
| Copy(IntPtr, Single[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de número de ponto flutuante de precisão única gerenciada. |
| Copy(IntPtr, Byte[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiro sem sinal de 8 bits gerenciada. |
| Copy(Int64[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de inteiros com sinal de 64 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado. |
| Copy(Int32[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de inteiros com sinal de 32 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado. |
| Copy(Int16[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de inteiros com sinal de 16 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado. |
| Copy(Double[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de número de ponto flutuante de precisão dupla gerenciada unidimensional para um ponteiro de memória não gerenciado. |
| Copy(IntPtr, Char[], Int32, Int32) |
Copia dados de um ponteiro de memória não gerenciado para uma matriz de caracteres gerenciado. |
| Copy(Char[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de caracteres gerenciado unidimensional para um ponteiro de memória não gerenciado. |
| Copy(Byte[], Int32, IntPtr, Int32) |
Copia dados de uma matriz de inteiros sem sinal unidimensional gerenciada de 8 bits para um ponteiro de memória não gerenciado. |
Copy(Single[], Int32, IntPtr, Int32)
Copia dados de uma matriz unidimensional de número de ponto flutuante de precisão única gerenciada para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <float> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(float[] source, int startIndex, IntPtr destination, int length);
public static void Copy(float[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : single[] * int * nativeint * int -> unit
static member Copy : single[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Single(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Single[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
source, startIndexou destinationlength é null.
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(IntPtr[], Int32, IntPtr, Int32)
Copia dados de uma matriz de IntPtr gerenciada unidimensional para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <IntPtr> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr[] source, int startIndex, IntPtr destination, int length);
public static void Copy(IntPtr[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint[] * int * nativeint * int -> unit
static member Copy : nativeint[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As IntPtr(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
-
IntPtr[]
nativeint[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada IntPtr unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(IntPtr, IntPtr[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de IntPtr gerenciada.
public:
static void Copy(IntPtr source, cli::array <IntPtr> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, IntPtr[] destination, int startIndex, int length);
public static void Copy(IntPtr source, IntPtr[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * nativeint[] * int * int -> unit
static member Copy : nativeint * nativeint[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As IntPtr(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
-
IntPtr[]
nativeint[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Portanto, os dados não gerenciados que correspondem ao source parâmetro preenchem a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar o Marshal.Copy método.
Aplica-se a
Copy(IntPtr, Int64[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 64 bits gerenciada.
public:
static void Copy(IntPtr source, cli::array <long> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, long[] destination, int startIndex, int length);
public static void Copy(IntPtr source, long[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * int64[] * int * int -> unit
static member Copy : nativeint * int64[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Long(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Int64[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
Int64[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
Int64[] managedArray2 = new Int64[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Int64() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Int64
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes aosource parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(IntPtr, Int32[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 32 bits gerenciada.
public:
static void Copy(IntPtr source, cli::array <int> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, int[] destination, int startIndex, int length);
public static void Copy(IntPtr source, int[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * int[] * int * int -> unit
static member Copy : nativeint * int[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Integer(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Int32[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
int[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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 copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Integer() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Integer
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(IntPtr, Int16[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiros com sinal de 16 bits gerenciada.
public:
static void Copy(IntPtr source, cli::array <short> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, short[] destination, int startIndex, int length);
public static void Copy(IntPtr source, short[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * int16[] * int * int -> unit
static member Copy : nativeint * int16[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Short(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Int16[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
short[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
short[] managedArray2 = new short[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Short() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Short
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(IntPtr, Double[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de número de ponto flutuante de precisão dupla gerenciada.
public:
static void Copy(IntPtr source, cli::array <double> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, double[] destination, int startIndex, int length);
public static void Copy(IntPtr source, double[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * double[] * int * int -> unit
static member Copy : nativeint * double[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Double(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Double[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
double[] managedArray = { 0.1, 0.2, 0.3, 0.4 };
// Initialize unmanaged 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.
double[] managedArray2 = new double[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Double() = {0.1, 0.2, 0.3, 0.4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Double
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(IntPtr, Single[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de número de ponto flutuante de precisão única gerenciada.
public:
static void Copy(IntPtr source, cli::array <float> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, float[] destination, int startIndex, int length);
public static void Copy(IntPtr source, float[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * single[] * int * int -> unit
static member Copy : nativeint * single[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Single(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Single[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(IntPtr, Byte[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de inteiro sem sinal de 8 bits gerenciada.
public:
static void Copy(IntPtr source, cli::array <System::Byte> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, byte[] destination, int startIndex, int length);
public static void Copy(IntPtr source, byte[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * byte[] * int * int -> unit
static member Copy : nativeint * byte[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Byte(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Byte[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
byte[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
byte[] managedArray2 = new byte[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Byte() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Byte
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(Int64[], Int32, IntPtr, Int32)
Copia dados de uma matriz de inteiros com sinal de 64 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <long> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(long[] source, int startIndex, IntPtr destination, int length);
public static void Copy(long[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : int64[] * int * nativeint * int -> unit
static member Copy : int64[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Long(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Int64[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
source, startIndexou destinationlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
Int64[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
Int64[] managedArray2 = new Int64[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Int64() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Int64
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(Int32[], Int32, IntPtr, Int32)
Copia dados de uma matriz de inteiros com sinal de 32 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <int> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(int[] source, int startIndex, IntPtr destination, int length);
public static void Copy(int[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : int[] * int * nativeint * int -> unit
static member Copy : int[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Integer(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Int32[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
startIndex ou length é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
int[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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 copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Integer() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Integer
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(Int16[], Int32, IntPtr, Int32)
Copia dados de uma matriz de inteiros com sinal de 16 bits unidimensional e gerenciada para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <short> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(short[] source, int startIndex, IntPtr destination, int length);
public static void Copy(short[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : int16[] * int * nativeint * int -> unit
static member Copy : int16[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Short(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Int16[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
source, startIndexou destinationlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
short[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
short[] managedArray2 = new short[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Short() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Short
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(Double[], Int32, IntPtr, Int32)
Copia dados de uma matriz de número de ponto flutuante de precisão dupla gerenciada unidimensional para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <double> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(double[] source, int startIndex, IntPtr destination, int length);
public static void Copy(double[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : double[] * int * nativeint * int -> unit
static member Copy : double[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Double(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Double[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
source, startIndexou destinationlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
double[] managedArray = { 0.1, 0.2, 0.3, 0.4 };
// Initialize unmanaged 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.
double[] managedArray2 = new double[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Double() = {0.1, 0.2, 0.3, 0.4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Double
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(IntPtr, Char[], Int32, Int32)
Copia dados de um ponteiro de memória não gerenciado para uma matriz de caracteres gerenciado.
public:
static void Copy(IntPtr source, cli::array <char> ^ destination, int startIndex, int length);
[System.Security.SecurityCritical]
public static void Copy(IntPtr source, char[] destination, int startIndex, int length);
public static void Copy(IntPtr source, char[] destination, int startIndex, int length);
[<System.Security.SecurityCritical>]
static member Copy : nativeint * char[] * int * int -> unit
static member Copy : nativeint * char[] * int * int -> unit
Public Shared Sub Copy (source As IntPtr, destination As Char(), startIndex As Integer, length As Integer)
Parâmetros
- source
-
IntPtr
nativeint
O ponteiro de memória do qual copiar.
- destination
- Char[]
A matriz para a qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de destino em que a cópia deve ser iniciada.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
source, destinationou startIndexlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
// Remember that the actual size of System.Char in unmanaged memory is 2.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
char[] managedArray = new char[1000];
managedArray[0] = 'a';
managedArray[1] = 'b';
managedArray[2] = 'c';
managedArray[3] = 'd';
managedArray[999] = 'Z';
// Initialize unmanaged memory to hold the array.
// int size = Marshal.SizeOf(managedArray[0]) * managedArray.Length; // Incorrect
int size = Marshal.SystemDefaultCharSize * managedArray.Length; // Correct
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.
char[] managedArray2 = new char[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("Here is the roundtripped array: {0} {1} {2} {3} {4}",
managedArray2[0], managedArray2[1], managedArray2[2], managedArray2[3],
managedArray2[999]);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
' Remember that the actual size of System.Char in unmanaged memory is 2.
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
' Create a managed array.
Dim managedArray As Char() = New Char(999) {}
managedArray(0) = "a"c
managedArray(1) = "b"c
managedArray(2) = "c"c
managedArray(3) = "d"c
managedArray(999) = "Z"c
' Initialize unmanaged memory to hold the array.
' Dim size As Integer = Marshal.SizeOf(managedArray[0]) * managedArray.Length; ' Incorrect
Dim size As Integer = Marshal.SystemDefaultCharSize * managedArray.Length ' Correct
Dim pnt As IntPtr = 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.
Dim managedArray2 As Char() = New Char(managedArray.Length - 1) {}
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("Here is the roundtripped array: {0} {1} {2} {3} {4}", managedArray2(0), managedArray2(1), managedArray2(2), managedArray2(3), managedArray2(999))
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Matrizes de estilo C não gerenciadas não contêm informações de limites, o que impede que os parâmetros e length os startIndex parâmetros sejam validados. Assim, os dados não gerenciados correspondentes ao source parâmetro populam a matriz gerenciada, independentemente de sua utilidade. Você deve inicializar a matriz gerenciada com o tamanho apropriado antes de chamar esse método.
Confira também
Aplica-se a
Copy(Char[], Int32, IntPtr, Int32)
Copia dados de uma matriz de caracteres gerenciado unidimensional para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <char> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(char[] source, int startIndex, IntPtr destination, int length);
public static void Copy(char[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : char[] * int * nativeint * int -> unit
static member Copy : char[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Char(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Char[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
startIndex, destinationou length é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada e copia a matriz não gerenciada de volta para a memória gerenciada.
// Remember that the actual size of System.Char in unmanaged memory is 2.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
char[] managedArray = new char[1000];
managedArray[0] = 'a';
managedArray[1] = 'b';
managedArray[2] = 'c';
managedArray[3] = 'd';
managedArray[999] = 'Z';
// Initialize unmanaged memory to hold the array.
// int size = Marshal.SizeOf(managedArray[0]) * managedArray.Length; // Incorrect
int size = Marshal.SystemDefaultCharSize * managedArray.Length; // Correct
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.
char[] managedArray2 = new char[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("Here is the roundtripped array: {0} {1} {2} {3} {4}",
managedArray2[0], managedArray2[1], managedArray2[2], managedArray2[3],
managedArray2[999]);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
' Remember that the actual size of System.Char in unmanaged memory is 2.
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
' Create a managed array.
Dim managedArray As Char() = New Char(999) {}
managedArray(0) = "a"c
managedArray(1) = "b"c
managedArray(2) = "c"c
managedArray(3) = "d"c
managedArray(999) = "Z"c
' Initialize unmanaged memory to hold the array.
' Dim size As Integer = Marshal.SizeOf(managedArray[0]) * managedArray.Length; ' Incorrect
Dim size As Integer = Marshal.SystemDefaultCharSize * managedArray.Length ' Correct
Dim pnt As IntPtr = 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.
Dim managedArray2 As Char() = New Char(managedArray.Length - 1) {}
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("Here is the roundtripped array: {0} {1} {2} {3} {4}", managedArray2(0), managedArray2(1), managedArray2(2), managedArray2(3), managedArray2(999))
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.
Aplica-se a
Copy(Byte[], Int32, IntPtr, Int32)
Copia dados de uma matriz de inteiros sem sinal unidimensional gerenciada de 8 bits para um ponteiro de memória não gerenciado.
public:
static void Copy(cli::array <System::Byte> ^ source, int startIndex, IntPtr destination, int length);
[System.Security.SecurityCritical]
public static void Copy(byte[] source, int startIndex, IntPtr destination, int length);
public static void Copy(byte[] source, int startIndex, IntPtr destination, int length);
[<System.Security.SecurityCritical>]
static member Copy : byte[] * int * nativeint * int -> unit
static member Copy : byte[] * int * nativeint * int -> unit
Public Shared Sub Copy (source As Byte(), startIndex As Integer, destination As IntPtr, length As Integer)
Parâmetros
- source
- Byte[]
A matriz unidimensional da qual copiar.
- startIndex
- Int32
O índice baseado em zero na matriz de origem em que a cópia deve ser iniciada.
- destination
-
IntPtr
nativeint
O ponteiro de memória para o qual copiar.
- length
- Int32
O número de elementos de matriz a serem copiados.
- Atributos
Exceções
startIndex e length não são válidos.
source, startIndexou destinationlength é null.
Exemplos
O exemplo a seguir copia uma matriz para memória não gerenciada usando a Copy(Byte[], Int32, IntPtr, Int32) sobrecarga e copia a matriz não gerenciada de volta para a memória gerenciada usando a Copy(IntPtr, Byte[], Int32, Int32) sobrecarga.
using System;
using System.Runtime.InteropServices;
class Example
{
static void Main()
{
// Create a managed array.
byte[] managedArray = { 1, 2, 3, 4 };
// Initialize unmanaged 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.
byte[] managedArray2 = new byte[managedArray.Length];
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);
Console.WriteLine("The array was copied to unmanaged memory and back.");
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
}
}
Imports System.Runtime.InteropServices
Module Example
Sub Main()
' Create a managed array.
Dim managedArray As Byte() = {1, 2, 3, 4}
' Initialize unmanaged memory to hold the array.
Dim size As Integer = Marshal.SizeOf(managedArray(0)) * managedArray.Length
Dim pnt As IntPtr = 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.
Dim managedArray2(managedArray.Length) As Byte
Marshal.Copy(pnt, managedArray2, 0, managedArray.Length)
Console.WriteLine("The array was copied to unmanaged memory and back.")
Finally
' Free the unmanaged memory.
Marshal.FreeHGlobal(pnt)
End Try
End Sub
End Module
Comentários
Você pode usar esse método para copiar um subconjunto de uma matriz gerenciada unidimensional para uma matriz de estilo C não gerenciada.