BitConverter vs Casting差异

时间:2013-07-14 09:22:21

标签: c# performance casting byte

鉴于:

int onlyLastByteContainsValue = 35;

以下哪项更快,为什么?

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

或者

byte valueInByte = (byte)onlyLastByteContainsValue;

后续问题: 上述两者之间是否存在其他差异?

1 个答案:

答案 0 :(得分:2)

当然,演员阵容会更快,从我的分析到最高x5,优化关闭(甚至更优化)。

当然有不同的事情发生:

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

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