BitConverter与铸造差异
本文关键字:BitConverter | 更新日期: 2023-09-27 18:22:19
假设:
int onlyLastByteContainsValue = 35;
以下哪项更快,为什么?
byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3];
或
byte valueInByte = (byte)onlyLastByteContainsValue;
后续问题:以上两者之间还有其他区别吗?
当然,在关闭优化的情况下,转换速度会更快,从我的评测到x5(打开优化的情况甚至更快)。
当然,有不同的事情在发生:
-
BitConverter
语句分配一个大小为sizeof(int)
的数组,用int值的所有字节填充它,然后对数组进行索引以仅检索一个字节。不用说,这是浪费资源。 -
强制转换检查指定的值是否在
byte
的范围内(除非指定了unchecked
),并将该值的最低有效字节强制转换为byte
。