Maison > développement back-end > Tutoriel C#.Net > Apprenez étape par étape à utiliser les pointeurs en C#

Apprenez étape par étape à utiliser les pointeurs en C#

烟雨青岚
Libérer: 2020-06-30 13:48:48
avant
7510 Les gens l'ont consulté

Apprenez étape par étape à utiliser les pointeurs en C#

Vous apprendre étape par étape comment utiliser les pointeurs en C#

C# est un langage interprété dans lequel les pointeurs sont encapsulés, donc les utilisateurs Le pointeur d'un objet ne peut pas être appelé directement. Mais lorsque vous utilisez C# pour appeler une DLL C/C++, il arrive souvent que les paramètres de fonction ou les valeurs de retour soient des pointeurs. Dans ce cas, les pointeurs doivent être manipulés.

Pour utiliser des pointeurs en C#, vous devez d'abord répondre aux questions suivantes :

1 Quels types de pointeurs sont fournis par C# ? C# fournit Le pointeur est un IntPtr ou UIntPtr, un type spécifique à la plate-forme utilisé pour représenter un pointeur ou un handle. Par conséquent, IntPtr peut être utilisé pour représenter des pointeurs ou des handles et est un type spécifique à la plate-forme.

1.1 Où IntPtr est-il utilisé ?

(1) Lorsque C# appelle l'API WIN32

(2) Lorsque C# appelle une DLL écrite en C/C++ (En fait, c'est la même chose que 1, mais ceci est généralement utilisé lorsque nous coopérons avec d'autres pour développer)

1.2 Comment utiliser IntPtr

Par exemple, il existe un prototype de fonction défini comme :

DllDemoAPI DLLGen* DLLGen_Create(HWND hWnd);
Copier après la connexion

Ensuite, lorsque nous citons en C#, nous devrions écrire comme ceci :

[DllImport("DLLGen.dll", EntryPoint = "DLLGen_Create", CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr DLLGen_Create(IntPtr hWnd);
Copier après la connexion

Cela implique la correspondance entre les types C# et les types C++. sont les suivants :

(1) void * peut être directement converti en IntPtr.

(2) char * correspond au type chaîne en C#.

2. Quelle est la différence entre géré et non géré ?

Le mécanisme d'allocation et de recyclage automatique de l'espace d'allocation de mémoire en C# est implémenté à l'aide de la mémoire gérée. appelée mémoire gérée La mémoire est l'endroit où le programme est responsable de l'allocation de la mémoire du pointeur et de la détermination si le pointeur doit être libéré en comptant le nombre de références au pointeur.

Non géré fait référence à l'allocation de mémoire de pointeur à une zone de mémoire non gérée. Les pointeurs alloués ici doivent allouer de la mémoire par eux-mêmes et recycler la mémoire par eux-mêmes.

3. Comment utiliser des pointeurs comme en C/C++

En C#, vous pouvez utiliser des instructions non sécurisées pour faire fonctionner des pointeurs. Par exemple,

unsafe
{
    int *ptr = new int[100];
    for (int i = 0; i < 100; i++)
    {
        *(ptr+i) = i;
    }
    delete[] ptr;
}
Copier après la connexion

Dans le module unsafe, les pointeurs peuvent être utilisés à la manière c/c++.

Remarque : lorsque vous utilisez des modules non sécurisés, cochez l'option "Autoriser l'utilisation de modules non sécurisés" dans les propriétés du projet C#.

Merci à tous d'avoir lu, j'espère que vous en bénéficierez beaucoup.

Cet article est reproduit à partir de : https://blog.csdn.net/menjiawan/article/details/48677455

Tutoriel recommandé : "

Langage C

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal