你应该在你的C#代码中使用指针吗? 有什么好处? 是否由The Man(微软)推荐?
我知道C#让程序员能够访问,在不安全的上下文中使用指针。 但是,这是什么时候需要? 在什么情况下,使用指针变得不可避免? 仅仅是出于性能的原因? 另外,为什么C#通过不安全的上下文来暴露这个function,并从中删除所有的pipe理优势? 在理论上是否可以使用指针而不会失去托pipe环境的优点?
过去我从来不需要使用不安全的,但是现在我需要它来处理一个位图的指针。 我找不到任何其他文档,但我想更好地了解不安全的作品,以及如果它在循环内部或外部使用它有什么区别。 这样做更好吗? unsafe { for (int x = 0; x < maxX; x++) { for (int y = 0; y < maxY; y++) { //Unsafe pointer operations here. } } } 还是要做? for (int x = 0; x < maxX; x++) { for (int y = 0; y < maxY; y++) { unsafe { […]
为什么会出现以下错误? 不安全的代码只有在编译时使用/不安全“? 我使用C#和Visual Studio 2008在Windows CE上进行编程。
我想尽可能快地从float[]获得一个byte[] ,而不需要遍历整个数组(可能是通过cast)。 不安全的代码是好的。 谢谢! 我正在寻找比浮点数组长4倍的字节数组(由于每个浮点数由4个字节组成,所以字节数组的维将是浮点数组的4倍)。 我会把这个传给一个BinaryWriter。 编辑 :对那些批评尖叫“不成熟的优化”:我已经使用ant探查器基准化之前,我优化。 由于该文件具有直写caching,浮点数组的大小与磁盘上的扇区大小相匹配,因此速度显着提高。 二进制编写器包装一个用pinvoke win32 API创build的文件句柄。 发生优化,因为这减less了函数调用的次数。 而且,就内存而言,这个应用程序创build了大量的使用大量内存的caching。 我可以分配一次字节缓冲区并多次重复使用它 – 这个特定实例中的双重内存使用量在应用程序的整个内存消耗中相当于一个舍入错误。 所以我想这里的教训是不要过早的假设;)
在Java中,有没有办法获得引用地址,比如说 String s = "hello" 我可以得到s本身的地址,我也可以得到引用的对象的地址吗?
我知道Java没有指针,但是我听说可以用指针创buildJava程序,而这可以由less数几个java专家来完成。 这是真的吗?
有一天我遇到了sun.misc.Unsafe软件包,并对它能做的事情感到惊讶。 当然,这个class没有证件,但是我想知道是否有使用它的好理由。 哪些情况下可能会出现需要使用的情况? 在真实世界的场景中如何使用它? 而且,如果你确实需要它,那么这是不是表明你的devise有可能是错的? 为什么Java甚至包含这个类?