我找到了一个我要实现的代码片段。现在是一个函数没有运行的问题。无法将索引应用于“IntPtr”类型的表达式
fixed (byte* numRef = this.tribuf)
{
for (int i = 0; i < num; i++)
{
item = this.trihash.GetItem(ch + S.Substring(i, 3));
if (item != null)
{
this.TrigramChecked += item.Count;
foreach (int num3 in item)
{
if ((num3 != id) && (numRef[num3] < 0xff))
{
IntPtr ptr1 = (IntPtr) (numRef + num3);
/* ToDo: Error */
ptr1[0] = (IntPtr) ((byte) (ptr1[0] + 1));
}
}
}
}
}
问候克里斯
答案 0 :(得分:2)
正如我在评论中所说,我会首先尝试避免使用不安全的代码,但它看起来就像它真的只是试图做的那样:
if ((num3 != id) && (numRef[num3] < 0xff))
{
numRef[num3]++;
}
或者更高效(仅从numRef[num3]
读取一次):
if (num3 != id)
{
byte value = numRef[num3];
if (value < 0xff)
{
numRef[num3] = (byte) (value + 1);
}
}