La palabra clave extern en C#
En el artículo de hoy, aprenderemos la funcionalidad de la palabra clave extern
en C#.
extern
en C#
La declaración de un método implementado externamente se realiza mediante el modificador extern
. Cuando se utilizan servicios Interop
para llamar a código no administrado, el modificador extern
se usa a menudo junto con el atributo DllImport
.
Es necesario definir el método como static
en esta situación.
La palabra clave extern
también se puede usar para construir un alias de ensamblaje externo, lo que permite hacer referencia a varias versiones del mismo componente dentro de un solo ensamblaje.
Es inaceptable alterar un solo miembro utilizando simultáneamente los modificadores abstract
y extern
. Cuando usa el modificador abstract
, indica que la implementación del método no se proporciona en la clase, en contraste con cuando usa el modificador extern
, que sugiere que la implementación del método se encuentra fuera del código C#.
Cómo funciona extern
en C#
Se acuerda que un método se considera un método externo si su declaración contiene el modificador extern
. La implementación de métodos externos suele tener lugar fuera de C# y utiliza un lenguaje de programación diferente.
Dado que la declaración de un método externo no incluye ninguna implementación real, el cuerpo del método de un método externo se compone de un solo punto y coma. Existe la posibilidad de que un método exterior no sea genérico.
El modificador extern
se usa a menudo junto con una propiedad DllImport
. Esta combinación permite que Dynamic Link Libraries
o DLLs
incorporen métodos de módulos externos.
Existe la posibilidad de que el entorno de ejecución admita técnicas adicionales que permitan ofrecer implementaciones de métodos externos. Cuando un método externo tiene una propiedad DllImport
, la declaración del método también debe tener un modificador estático
para funcionar correctamente.
Sintaxis:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Ejemplo:
En este ejemplo, podemos utilizar los alias extern
para importar funcionalidad y luego utilizar esa funcionalidad según convenga.
Un solo nombre completamente calificado puede referirse a dos tipos cuando se utiliza un alias
externo. Cuando dos entidades tienen el mismo nombre totalmente calificado, la indicación del namespace
y el tipo names
son iguales.
Esto es algo que solo puede ocurrir cuando los dos tipos se originan a partir de dos ensamblajes separados.
-
Primera librería compilada a
info1.dll
namespace information { public class info {} }
-
Segunda librería compilada a
info2.dll
namespace information { public class info {} }
-
El siguiente es un ejemplo de una aplicación que utiliza los archivos
info1.dll
einfo2.dll
.using info; class Test { static void Main() { information i = new information(); } }
-
Por falta de claridad en la
information
, no se puede compilar la solicitud. En esta situación, la incertidumbre se puede despejar utilizando aliasextern
.Primero debe cambiar el archivo
.csproj
que usa la aplicación y darle a cada referencia sualias
distinto.<ItemGroup> <Reference Include="info1"> <Aliases>i1</Aliases> </Reference> <Reference Include="info2"> <Aliases>i2</Aliases> </Reference> </ItemGroup>
-
Utilice la directiva de alias
extern
como último paso del proceso.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