正常类型转换与指针转换

时间:2012-08-05 09:33:38

标签: c# type-conversion

像这样进行转换有什么好处

int i = 1024;
byte b = (byte)i;

执行此操作

int i = 1024;
byte b = *((byte*) &i);

我的意思是,如果你想使用第二种方法,你必须使用不安全的代码,这意味着JIT无法按照自己的意愿对其进行优化(我认为它是在内部以第二种方式进行)等等。

有人可以解释我何时以及为何使用第一种/第二种方法?

问候

1 个答案:

答案 0 :(得分:2)

这两者并不相同。

第一种是简单的语言定义演员。其结果定义明确:第一个返回8个最低有效位。

第二个实际上是一个重新解释。它返回内存中的前8位。这在典型的小端系统上恰好相同,但在大端系统上却有所不同。

有一些罕见的情况,重新解释强制转换是有用的,但这不是其中之一。除非遇到只能通过重新解释转换才能解决的问题,否则应始终使用普通强制转换。