日期:2014-05-17  浏览次数:21331 次

这个警告 Implicitly captured closure 含意是什么?会造成什么问题、以及如何修改
代码是修理过的,没有实际意义,只为了再现问题,请只从语法方面看

在“var string2”这一行的第一个=>符号上有个警告,写着“Implicitly captured closure: string1”。但是如果把string1 inline就不报这个警告

问题如题。。。



using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args) { GetUsableResTimeRange(); }

        internal static void GetUsableResTimeRange()
        {
            const string string1 = "abc";
            var dt = DateTime.Now;
            var lst1 = new List<string>();
            var lst2 = lst1.Where(str => str == string1 && str.ToString() == dt.ToString());
            var string2 = lst1.FirstOrDefault(nouse => lst2.All(str => dt.ToString() != str.ToString()));
        }
    }
}



------解决方案--------------------
vs2010,framework 4.0,但是机器上装了4.5
编译无错误无警告