相关疑难解决方法(0)

C#'是'类型检查struct - 奇怪的.NET 4.0 x86优化行为

更新:我已向Microsoft Connect 提交了错误报告,请投票支持!

更新2: Microsoft已将错误报告标记为已修复

微软于18/08/2010 17:25发表

此错误将在运行时的未来版本中修复.我担心现在判断它是在服务包还是下一个主要版本中还为时过早.

自从升级到VS2010后,我的'is'关键字出现了一些非常奇怪的行为.

下面的程序(test.cs)在调试模式下编译时(对于x86)输出True,在编译时使用优化(对于x86)时输出False.编译x64或AnyCPU中的所有组合可得到预期结果True.

.NET 3.5下的所有编译组合都给出了预期的结果True.

我正在使用下面的批处理文件(runtest.bat)来编译和测试代码,使用编译器.NET框架的各种组合.

  • 有谁在.NET 4.0下看到过这类问题?
  • 运行runtests.bat时,其他人是否在计算机上看到与我相同的行为?
  • @ $ @#$?

  • 有没有解决这个问题?

test.cs中

using System;

public class Program
{
    public static bool IsGuid(object item)
    {
        return item is Guid;
    } 

    public static void Main()
    {
        Console.Write(IsGuid(Guid.NewGuid()));
    }
}
Run Code Online (Sandbox Code Playgroud)

runtest.bat

@echo off

rem Usage:
rem   runtest         -- runs with csc.exe x86 .NET 4.0
rem   runtest 64      -- runs with csc.exe x64 .NET 4.0
rem   runtest v3.5    -- runs with csc.exe …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction optimization struct casting

38
推荐指数
3
解决办法
1490
查看次数