Le mot-clé extern en C#
Dans l’article d’aujourd’hui, nous allons apprendre la fonctionnalité du mot-clé extern
en C#.
extern
en C#
La déclaration d’une méthode implémentée en externe se fait à l’aide du modificateur extern
. Lors de l’utilisation des services Interop
pour appeler du code non géré, le modificateur extern
est souvent utilisé conjointement avec l’attribut DllImport
.
Il faut définir la méthode comme static
dans cette situation.
Le mot-clé extern
peut également être utilisé pour construire un alias d’assemblage externe, permettant de référencer plusieurs versions d’un même composant au sein d’un même assemblage.
Modifier un seul membre en utilisant simultanément les modificateurs abstract
et extern
est inacceptable. Lorsque vous utilisez le modificateur abstract
, il indique que l’implémentation de la méthode n’est pas fournie dans la classe, contrairement à lorsque vous utilisez le modificateur extern
qui suggère que l’implémentation de la méthode est située en dehors du code C#.
Comment extern
fonctionne en C#
Il est convenu qu’une méthode est considérée comme une méthode externe si sa déclaration contient le modificateur extern
. L’implémentation de méthodes externes a souvent lieu en dehors de C# et utilise un langage de programmation différent.
Étant donné qu’une déclaration de méthode externe n’inclut aucune implémentation réelle, le corps de méthode d’une méthode externe comprend un seul point-virgule. Il est possible qu’une méthode extérieure ne soit pas générique.
Le modificateur extern
est souvent utilisé en conjonction avec une propriété DllImport
. Cette combinaison permet aux Dynamic Link Libraries
ou DLLs
d’intégrer des méthodes issues de modules externes.
Il est possible que l’environnement d’exécution supporte des techniques supplémentaires permettant d’offrir des implémentations de méthodes externes. Lorsqu’une méthode externe possède une propriété DllImport
, la déclaration de la méthode doit également posséder un modificateur static
pour fonctionner correctement.
Syntaxe:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Exemple:
Dans cet exemple, nous pouvons utiliser des alias extern
pour importer des fonctionnalités, puis utiliser ces fonctionnalités de manière appropriée.
Un même nom pleinement qualifié peut faire référence à deux types lors de l’utilisation d’un alias
externe. Lorsque deux entités ont le même nom pleinement qualifié, l’indication namespace
et le type names
sont identiques.
C’est quelque chose qui ne peut avoir lieu que lorsque les deux genres proviennent de deux assemblages distincts.
-
Première bibliothèque compilée en
info1.dll
namespace information { public class info {} }
-
Deuxième bibliothèque compilée en
info2.dll
namespace information { public class info {} }
-
Voici un exemple d’application qui utilise les fichiers
info1.dll
etinfo2.dll
.using info; class Test { static void Main() { information i = new information(); } }
-
En raison du manque de clarté dans les
information
, la candidature ne peut pas être compilée. Dans cette situation, l’incertitude peut être levée à l’aide d’aliasextern
.Vous devez d’abord changer le fichier
.csproj
utilisé par l’application et donner à chaque référence sonalias
distinct.<ItemGroup> <Reference Include="info1"> <Aliases>i1</Aliases> </Reference> <Reference Include="info2"> <Aliases>i2</Aliases> </Reference> </ItemGroup>
-
Utilisez la directive d’alias
extern
comme dernière étape du processus.extern alias i1; extern alias i2; class Test { static void Main() { i1.information.info first = new i1.information.info(); i2.information.info second = new i2.information.info(); } }
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn