Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 普通类型转换与指针转换_C#_Type Conversion - Fatal编程技术网

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位。这在典型的小端系统上是相同的,但在大端系统上是不同的


在少数情况下,重新解释强制转换很有用,但这不是其中之一。您应该始终使用普通类型转换,除非您有只能通过重新解释类型转换才能解决的问题。

您在这里试图解决的问题是什么?(摘自“你应该根据你面临的实际问题提出实际的、可回答的问题”)。我引述:“有人能告诉我什么时候以及为什么使用第一种/第二种方法吗?”这不是我要解决的问题,而是什么时候使用第一种,然后再使用第二种方法的问题;)@科恩格尔:为什么?在我看来,它在语法上是正确的,前提是它在一个不安全的代码块中。忘记在构建中检查不安全,谢谢你指出