-1

鉴于:

int onlyLastByteContainsValue = 35;

以下哪个更快,为什么?

byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];

或者

byte valueInByte = (byte)onlyLastByteContainsValue;

追问:以上两者还有其他区别吗?

4

1 回答 1

2

自然地,演员会更快,从我的分析到 x5,优化关闭(甚至更优化优化)。

当然,还有不同的事情发生:

  • 您的BitConverter语句分配了一个大小为 的数组,用sizeof(int)int 值的所有字节填充它,然后索引该数组以仅检索一个字节。不用说,这是对资源的浪费。

  • 强制转换检查指定的值是否在 的范围内byte(除非unchecked指定),并将值的最低有效字节强制转换为 a byte

于 2013-07-14T09:38:40.827 回答