C# 中的 extern 关键字
在今天的文章中,我们将学习 C# 中 extern
关键字的功能。
C#
中的 extern
关键字
使用 extern
修饰符声明外部实现的方法。当利用 Interop
服务调用非托管代码时,extern
修饰符通常与 DllImport
属性一起使用。
在这种情况下,有必要将方法定义为静态
。
extern
关键字也可用于构造外部程序集别名,允许在单个程序集中引用同一组件的多个版本。
同时使用 abstract
和 extern
修饰符来更改单个成员是不可接受的。当你使用 abstract
修饰符时,它表示方法实现未在类中提供,而当你使用 extern
修饰符时,这表明方法实现位于 C# 代码之外。
extern
如何在 C#
中工作
如果方法的声明包含 extern
修饰符,则同意将其视为外部方法。外部方法的实现通常发生在 C# 之外并使用不同的编程语言。
由于外部方法声明不包括任何实际实现,因此外部方法的方法体包含单个分号。外部方法可能不是通用的。
extern
修饰符通常与 DllImport
属性结合使用。这种组合允许 Dynamic Link Libraries
或 DLLs
合并来自外部模块的方法。
执行环境有可能支持其他技术,从而可以提供外部方法的实现。当外部方法具有 DllImport
属性时,方法声明还必须具有 static
修饰符才能正常运行。
语法:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
例子:
在这个例子中,我们可以使用 extern
别名来导入功能,然后适当地使用该功能。
使用外部别名
时,单个完全限定名称可能引用两种类型。当两个实体具有相同的完全限定名称时,表明 namespace
和类型 names
是相同的。
只有当这两种类型来自两个单独的程序集时,才会发生这种情况。
-
第一个编译成
info1.dll
的库namespace information { public class info {} }
-
第二个库编译为
info2.dll
namespace information { public class info {} }
-
以下是使用
info1.dll
和info2.dll
文件的应用程序示例。using info; class Test { static void Main() { information i = new information(); } }
-
由于
information
不清晰,无法编译应用程序。在这种情况下,可以使用extern
别名来清除不确定性。你首先需要更改应用程序使用的
.csproj
文件,并为每个引用指定其不同的别名
。<ItemGroup> <Reference Include="info1"> <Aliases>i1</Aliases> </Reference> <Reference Include="info2"> <Aliases>i2</Aliases> </Reference> </ItemGroup>
-
使用
extern
别名指令作为该过程的最后一步。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(); } }
相关文章
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:198 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:171 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中将 List<string>转换为字符串
发布时间:2024/03/16 浏览次数:187 分类:编程语言
-
在 C# 中,有两种主要方法可用于将 List
转换为字符串变量,Linq 方法和 String.Join()函数。
在 C# 中发出 HTTP POST Web 请求
发布时间:2024/02/04 浏览次数:131 分类:编程语言
-
在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求
在 C# 中运行命令提示符命令
发布时间:2024/02/04 浏览次数:130 分类:编程语言
-
Process 类可用于在 C# 中运行命令提示符命令。在 C# 中使用 Process.Start() 函数运行命令提示符命令
在 C# 中调整图像大小
发布时间:2024/02/04 浏览次数:203 分类:编程语言
-
有两种主要方法可用于在 C# 中调整图像的大小,Bitmap 类构造函数和 graphics.DrawImage()函数。在本教程中,我们将讨论在C#中调整图像大小的方法。我们将带您完成整个过程,从加载原始图像到保
在 C# 中下载图片
发布时间:2024/02/04 浏览次数:138 分类:编程语言
-
有 3 种主要方法可用于下载 C# 中的图片,WebClient.DownloadFile()函数,Bitmap 类和 Image.FromStream()函数。在 C# 中使用 WebClient 类下载图片 WebClient 类提供了用于向 C# 中的 URL 发送数据和从 URL 接收数据
在 C# 中使用秒表
发布时间:2024/02/04 浏览次数:139 分类:编程语言
-
我们可以使用 Stopwatch 类来计算 C# 中的经过时间。使用 C# 中的秒表类计算经过时间 Stopwatch 类在 C# 中准确测量经过的时间。
在 C# 中获取可执行路径
发布时间:2024/02/04 浏览次数:200 分类:编程语言
-
有 3 种主要方法可用于获取 C# 中程序的可执行路径,即 Assembly 类,AppDomain 类和 Path 类。本教程将介绍获取 C# 代码的可执行路径的方法。使用 C# 中的 Assembly 类获取可执行路径