c# - .net 3.5 和 .net 4.0 之间的奇怪区别

标签 c# .net

我有密码

byte[] bytes = new byte[] { 0x80, 1, 192, 33, 0 };

if (bytes[0] != 0x80 || ((bytes[1] & ~1) != 0) || bytes[4] != 0)
{
//signature wrong (.net 4.0 result)
}
else
{
//signture okay (.net 3.5 result)
}

在 .net 3.5 中,表达式的计算结果为 false,但在 4.0 中,它的计算结果为 true。我的问题是为什么?以及如何检查我所有的旧 (.net 3.5) 代码以防止这种行为?

最佳答案

所以它并没有在评论中丢失,我相信你在 RyuJIT 中遇到了一个错误,RyuJIT 是 .NET 4.6 中用于 64 位应用程序的新 JIT 编译器

这不是第一个,例如见this blog post显示 Stack Overflow 团队如何追踪另一个问题。

如评论中所述,如果您以 .NET 3.5 为目标,则不会触发它,如果您以 .NET 4 中的 x86 为目标,也不会触发。

错误可能已报告给 Microsoft,也可能尚未报告给 Microsoft - 如果有人知道此错误报告,或安装了 .NET 4.6 以进一步追踪根本原因,请随时进行编辑。

关于c# - .net 3.5 和 .net 4.0 之间的奇怪区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263941/

相关文章:

c# - 将子类转换到父类。我做得对吗?

c# - 在 Fody/Mono.Cecil 中获取 CustomAttribute 的 SequencePoint

java - (.Net + SQL Server +Azure ) 与 (Java + Oracle +Google App Engine) 哪个更适合这个项目?

.net - .Net SQLConnection 类是否有更安全的替代方案?

c# - 此命名空间冲突是由于 XAML 到 .NET 代码生成中的错误造成的吗?

c# - WPF-组合框选择已更改显示最后选择的项目而不是当前项目

c# - 如何从 Action<T> 获取方法的自定义属性?

c# - 代码中添加<>是什么意思?

.net - 一元运算符 '--' 后缺少表达式

c# - 如何在 C# 中的 Html.ActionLink 上使用 CSS