Tôi đã thực thi mã sau đây với C# 3.5 và 4.0. Kết quả hoàn toàn khác nhau.Sự khác biệt trong kết quả truy vấn LINQ trong .NET 3.5 và 4.5
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<IEnumerable<int>> results = new List<IEnumerable<int>>();
foreach (var num in numbers)
{
results.Add(numbers.Where(item => item > num));
}
foreach (var r in results)
{
Console.WriteLine("{0}", r.Count());
}
}
Với Microsoft (R) Visual C# 2008 Phiên bản trình biên dịch 3.5.30729.5420 đầu ra là 0 0 0 0 0 0 0 0 0 0
.
Nhưng với Microsoft (R) Visual C# Phiên bản trình biên dịch 4.0.30319.17929 đầu ra là 9 8 7 6 5 4 3 2 1 0
.
Tôi có một ý tưởng mờ nhạt rằng điều này là do thực thi trì hoãn hoặc đánh giá lười biếng nhưng chưa hiểu rõ cách thức chịu trách nhiệm về các kết quả đầu ra khác nhau tại đây.
Chỉnh sửa: Xin lỗi, đó là .NET 3.5 và 4.5 và cũng đã thêm phiên bản trình biên dịch Vui lòng giải thích.
Tôi nhận được cùng một kết quả trong 3.5 và 4.0, {9 8 7 ...} bạn có chắc chắn bạn không làm điều gì đó khác biệt? –
Nó cho tôi kết quả tương tự .... – Habib
Tôi tin rằng sự thay đổi này xảy ra với 4.5, không phải 4.0. –