嵌套的Linq Min()崩溃了Visual Studio

eye*_*snz 12 c# linq ide visual-studio-2008

我有一段代码使Visual Studio 2008 IDE运行速度非常慢,占用大量内存,最终导致崩溃.我怀疑VS正在达到操作系统内存限制.

以下代码不是我真正的应用程序代码,但它模拟了问题.基本上我试图使用LINQ在树中找到最小值.

class LinqTest
{
    public class test
    {
        public int val;
        public List<test> Tests;
    }

    private void CrashMe()
    {
        test t = new test();

        //Uncomment this to cause the problem
        //var x = t.Tests.Min(c => c.Tests.Min(d => d.Tests.Min(e => e.Tests.Min(f=>f.Tests.Min(g=>g.Tests.Min(h => h.val))))));
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人见过类似的东西?

geo*_*tnz 3

不久前,我在 MS Connect 上提交了一份错误报告。今天早上我收到了回复:

\n\n
\n

感谢 Visual Studio 2008 的错误报告!

\n\n

正如您在 Eric Lippert 博客的链接文章中指出的那样,我们在合理的时间内对此类嵌套 lambda 表达式进行类型推断的能力受到限制。也就是说,我们当然可以尝试对此类推理进行时间限制,或者对 lambda 嵌套设置硬性限制,以防止出现此类问题。不幸的是,我们开始锁定 Visual Studio 2010 中可以修复的内容,并且我们将无法在此版本中强制实施此类限制。

\n\n

在规划未来的版本时,我们一定会牢记这个问题!

\n\n

亚历克斯·特纳

\n\n

项目经理

\n\n

可视化 C# 编译器

\n
\n\n

\n\n
\n

您在 Microsoft Connect 上提交的以下反馈项目已更新:产品/技术 - Visual Studio 和 .NET Framework - 反馈 ID \xe2\x80\x93 476133 反馈标题 \xe2\x80\x93 嵌套 Linq Min() 使 Visual Studio 2008 崩溃IDE 以下字段或值已更改: 字段状态从 [Active] 更改为 [Resolved]

\n\n

字段分辨率从 [无] 更改为 [无法修复]

\n
\n