Как я уже сказал в комментарии, я бы в первую очередь попытался избежать небезопасного кода, но он выглядит , как будто он действительно пытается это сделать:
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);
}
}