C# 从字节[]到字节的更好方法*

C# 从字节[]到字节的更好方法*,c#,.net,optimization,unsafe,C#,.net,Optimization,Unsafe,有更好的办法吗?请注意,我没有使用fixed,因为我需要扫描缓冲区数据 GCHandle pinned1 = GCHandle.Alloc(Pic1, GCHandleType.Pinned); IntPtr ptr1 = pinned1.AddrOfPinnedObject(); byte* p1 = (byte*)ptr1.ToPointer(); //... //... //... byte a=*p1; p1++; //... //... pinned1.Free(); 是的,有一个更

有更好的办法吗?请注意,我没有使用
fixed
,因为我需要扫描缓冲区数据

GCHandle pinned1 = GCHandle.Alloc(Pic1, GCHandleType.Pinned);
IntPtr ptr1 = pinned1.AddrOfPinnedObject();
byte* p1 = (byte*)ptr1.ToPointer();
//...
//...
//...
byte a=*p1;
p1++;
//...
//...
pinned1.Free();

是的,有一个更好的方法:使用
fixed

您只需将指针指定给另一个变量,然后对该变量执行指针算术:

fixed (byte* ptr = pic1)
{
    byte* p1 = ptr;

    //...
    byte a = *p1;
    p1++;
    //...
}

此缓冲区是否与非托管代码共享?如果不是,那么
fixed
应该可以,甚至可以使用标准、安全的技术在没有指针的情况下迭代/循环数组。想出更好的东西需要更多关于你真正在做什么的信息;另外,有些东西告诉我,使用指针进行迭代要比使用数组索引进行迭代快得多。我想,没有衡量,遗产思维。真的吗?它对我来说很有用-看看MSDN中的这个示例:它解决了问题。thx@dtb