禁止在固定块内增加指针,它似乎应该工作

时间:2013-05-08 15:00:04

标签: c#

尝试增加指针时出错。

无法分配给ptr,因为它是固定变量CS1656 另一个指针ptruc也是同样的错误

unsafe void organize_data()
{
    fixed(byte* ptr =  &database[0])
    {
        fixed(byte* ptruc =  &dtbaseuc[0])
        {
            strcnt=1;
            linestrts[0]=0;
            for(int i=0;i<filelen;i++)
            {
                if(*ptr > 96 && *ptr < 123)*ptruc=(byte)((int)*ptr-(int)32);
                    if(*ptr ==13)
                    {
                        linestrts[strcnt]=i+1;
                        strcnt++;
                    }
                ptr++;
                ptruc++;
            }
        }
    }
    textBox2.Text=strcnt.ToString();
}

1 个答案:

答案 0 :(得分:6)

fixed块中声明的变量是只读的,无法分配。您必须复制指针,然后递增副本。

fixed (byte* ptr = &database[0]) {
    byte* dbPtr = ptr;

    ptr++;   // CS1656, ptr is read-only.
    dbPtr++; // Valid.
}