C# 普通类型转换与指针转换
这样转换有什么好处吗C# 普通类型转换与指针转换,c#,type-conversion,C#,Type Conversion,这样转换有什么好处吗 int i = 1024; byte b = (byte)i; 这样做太过分了 int i = 1024; byte b = *((byte*) &i); 我的意思是,如果你想使用第二种方法,你必须使用不安全的代码,这意味着JIT不能像它所希望的那样优化它(我认为它是在用第二种方法进行内部优化),等等 有人能告诉我什么时候和为什么使用第一种/第二种方法吗 问候语这两种问候语并不等同 第一种是简单的语言定义的cast。其结果定义良好:第一个返回8个最低有效位 第二
int i = 1024;
byte b = (byte)i;
这样做太过分了
int i = 1024;
byte b = *((byte*) &i);
我的意思是,如果你想使用第二种方法,你必须使用不安全的代码,这意味着JIT不能像它所希望的那样优化它(我认为它是在用第二种方法进行内部优化),等等
有人能告诉我什么时候和为什么使用第一种/第二种方法吗
问候语这两种问候语并不等同 第一种是简单的语言定义的cast。其结果定义良好:第一个返回8个最低有效位 第二种是有效地重新解释演员阵容。它返回内存中的前8位。这在典型的小端系统上是相同的,但在大端系统上是不同的
在少数情况下,重新解释强制转换很有用,但这不是其中之一。您应该始终使用普通类型转换,除非您有只能通过重新解释类型转换才能解决的问题。您在这里试图解决的问题是什么?(摘自“你应该根据你面临的实际问题提出实际的、可回答的问题”)。我引述:“有人能告诉我什么时候以及为什么使用第一种/第二种方法吗?”这不是我要解决的问题,而是什么时候使用第一种,然后再使用第二种方法的问题;)@科恩格尔:为什么?在我看来,它在语法上是正确的,前提是它在一个不安全的代码块中。忘记在构建中检查不安全,谢谢你指出