unsafe?是不是真的跟名字一样?是真的不安全吗?数组?直接操作数组是不是速度没有C++里用指针快?

解决方案 »

  1.   

    unsafe其实如果叫unmanagement也许更容易理解。
    安全不安全是写程序的人的水平决定的。 和语法无关。unsafe其实的意思就是说, 已经快脱离托管代码的范畴了,微软觉得有点“失控”, 得“后果自负”了 是这么个safe。
    不是安全性上的safe。至于数组和C++的指针 这个没法比吧?
      

  2.   

    unsafe,这部分操作的内存区域自己对安全负责
    是的
      

  3.   

    看楼主的需要是效率第一,那就不该用C#了,用C++讲运行效率,用C#讲开发效率,两者着眼点不同
      

  4.   

    C#里,本来就能够完全替代指针啊,你看C#里,哪里要需要用到指针,如果你很喜欢C++/c的指针就别用C#,何苦呢
      

  5.   

    如果用 C# 编写托管应用,
    在互作的场合会涉及到一些指针,
    不过那个有专门的类供你使用(InteropServices下面),
    没有必要使用 unsafe 代码,如果出现了大量的指针,
    说明出了问题.来之, 安之.
      

  6.   

    呵呵 你这描述很传神啊。哈哈。unsafe 是指没有系统为你提供  托管堆管理 ,垃圾回收,类型检查其实数组的速度已经很快了,没必要为那一点速度抛弃clr中(托管堆管理 ,垃圾回收,类型检查)这么多好处
      

  7.   


    哈哈,对对.就是这样. 指针这个东西,一开始很炫,结果后来因为指针这个东东太容易产生bug了,所以后悔了....
      

  8.   

    指针,是个很模糊的概念。指针就是一个内存地址的值。看你如何用。c#中指针操作就是用unsafe/fixed关键字,反来返去的也会消耗cpu和内存,并不划算的。看你实际需要了。
    IntPtr是c#中处理指针、句柄相关内容的类,支持64位系统。
    Marshal类也提供了对象到指针的方法,返回的是一个IntPtr对象。当然逆方法也有。都这个类中。
      

  9.   

    没有指针性能差得要死,遇到算法性能要求高的场合,(音频,图片编解码等),代码满足不了要求,什么clr中优点(托管堆管理 ,垃圾回收,类型检查),全都是浮云!