相关疑难解决方法(0)

LINQ中的延迟执行有什么好处?

LINQ使用延迟执行模型,这意味着在调用Linq运算符时不返回结果序列,而是这些运算符返回一个对象,该对象只有在枚举此对象时才会生成序列的元素.

虽然我理解延迟查询是如何工作的,但我在理解延迟执行的好处时遇到了一些麻烦:

1)我已经读过只有在你真正需要结果时执行的延迟查询才会有很大的好处.那么这个好处是什么?

2)延迟查询的其他优点是,如果您定义一次查询,那么每次枚举结果时,如果数据发生更改,您将得到不同的结果.

a)但是从下面的代码中可以看出,我们能够实现相同的效果(因此,每次枚举资源时,如果数据发生变化,我们会得到不同的结果),即使不使用延迟查询:

List<string> sList = new List<string>( new[]{ "A","B" });

foreach (string item in sList)
    Console.WriteLine(item); // Q1 outputs AB

sList.Add("C");

foreach (string item in sList)
    Console.WriteLine(item); // Q2 outputs ABC
Run Code Online (Sandbox Code Playgroud)

3)延期执行是否还有其他好处?

linq

41
推荐指数
3
解决办法
1万
查看次数

.结果操作不会阻塞

我预计下面的代码会被阻塞近 5 秒,但事实并非如此。它立即打印出来。Result操作不是阻塞的吗?

class Program
{
    static void Main()
    {
        // Return a value type with a lambda expression
        Task<int> task1 = Task<int>.Factory.StartNew(() => Task.Delay(5000).Id + 100);
        int i = task1.Result;
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# blocking task-parallel-library

1
推荐指数
1
解决办法
128
查看次数

标签 统计

blocking ×1

c# ×1

linq ×1

task-parallel-library ×1