有一些代码,我阅读和部位是:固定的指针语句?
public static unsafe byte[] GetBytes(uint value, bool BigEndian)
{
byte[] buff = new byte[4];
fixed (byte* pbyte = buff)*((uint*)pbyte) = value;
if (BigEndian)
buff.EndianConvert();
return buff;
}
据我所知,它只是把4个字节的单元的位置到字节数组,但我不清楚如何。
我对它的理解是:
(byte* pbyte = buff)
创建并返回一个字节的指针PBYTE,它指向的buff的地址,
(uint*)pbyte
施放PBYTE的地址转换为UINT指针?,
我不明白,虽然它的其余部分。固定关键字有什么用处?为什么不能这样做:
(byte* pbyte = buff) = (byte*)value;
谢谢,这清除了它。我以为这个声明是表达的一部分.. – mowwwalker 2011-12-29 04:52:17
@Walkerneo:说实话,它最初也把我扔了,而我(喜欢这样认为)我非常精通C#。我不得不在这条线上看两次,缺乏空间使它非常难看。 – 2011-12-29 08:27:38