今天阅读this question关于安全和不安全代码的内容,然后我在MSDN上读到了它,但我仍然不理解它。为什么要在C#中使用指针?这纯粹是为了速度吗?
发布于 2010-05-04 04:23:39
使用不安全代码有三个原因:
发布于 2010-05-04 04:20:58
有时,您需要使用指针将C#连接到底层操作系统或其他本机代码。我们强烈建议您不要这么做,因为这是“不安全的”(自然)。
在某些非常罕见的情况下,您的性能会受到CPU的限制,以至于您需要极少的额外性能。我的建议是在汇编程序或C/C++中的单独模块中编写那些与CPU相关的部分,导出一个API,然后让您的.NET代码调用该API。一个可能的额外好处是,您可以将特定于平台的代码放在非托管模块中,而不使用.NET平台。
发布于 2010-05-04 04:28:22
我倾向于避免它,但有时它非常有用:
用于提高性能的
的
例如,最后一个例子,我维护了一些序列化代码。在不使用BitConverter.GetBytes
(每次都会创建一个数组)的情况下向流中写入float
是一件痛苦的事情--但我可以作弊:
float f = ...;
int i = *(int*)&f;
现在我可以使用shift (>>
)等来编写i
,这比编写f
要容易得多(字节数将与我调用BitConverter.GetBytes
时的字节数相同,而且我现在可以通过选择使用shift来控制字节顺序)。
https://stackoverflow.com/questions/2760924
复制相似问题