gpt4 book ai didi

c# - IntPtr 与 ref C#

转载 作者:太空狗 更新时间:2023-10-29 17:49:59 24 4
gpt4 key购买 nike

我必须将非托管 dll 导入我的 C# 应用程序,我想知道 IntPtr 和 ref 之间有什么不同,你推荐我使用什么,为什么?请注意,这两种方式都对我有用。例如:

[DllImport("mydll.dll", CallingConvention=CallingConvention.Cdecl)]
static extern Result Init(IntPtr versionInfo);

[DllImport("mydll.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern Result Init(ref Version versionInfo);

最佳答案

如果 Version 是一个与 extern Init 函数期望的结构兼容的结构,则两者之间没有显着差异,除了 ref 版本将很多更易于从 C# 使用,因为运行时将为您管理所有编码(marshal)处理和固定。除非你真的想完成所有这些工作,否则我会坚持使用 ref 选项。

当然,在没有看到 C 函数原型(prototype)、C# 中的 Version 结构以及 C 中用于该参数的结构的情况下,我真的只能猜测。

关于c# - IntPtr 与 ref C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com