首页 文章

C#和void指针

提问于
浏览
6

我正在编写我的第一个C#应用程序,但幸运的是,我必须使用void指针(使用返回句柄的DLL) . 根据我的阅读,有几个选择:

还应该注意,我需要在DLL和C#应用程序之间来回传递信息 .

不安全的选项是第一个出现在谷歌上的选项,但出于某些原因,在我的所有功能都感觉不对之前编写关键词unsafe .

有什么建议?

3 回答

  • 0

    不安全是指向编译器的指令,在此上下文中将有指针 . 来自MSDN

    在公共语言运行库(CLR)中,不安全的代码称为无法验证的代码 . C#中的不安全代码不一定是危险的;这只是CLR无法验证其安全性的代码 . 因此,如果CLR位于完全受信任的程序集中,则它只会执行不安全的代码 . 如果使用不安全的代码,则您有责任确保代码不会引入安全风险或指针错误 .

    我在.net 1.1中使用它,而在C#中使用C API,用于通过PC的COM端口与大型机通信:)

  • 0

    通常,对于编组情况,使用IntPtr将是此处的首选方法 . 允许使用安全代码,并且非常清楚地表明您的意图是来回编组指针 .

    这是BCL表示处理的数量 . 例如,您可以构造表示本机句柄的Cursor from an IntPtr .

  • 6

    基本规则是如果你需要与它交互作为c#中的指针使用不安全的代码/指针 . 如果您可以将其视为不透明句柄,请使用IntPtr . 如果需要将指向结构的指针传递给非托管代码,则可以使用 ref .

相关问题