c# - 延期执行会不会先调用Dispose导致失败?

标签 c# .net linq deferred-execution

有两种方法,其中一种方法在 using 语句中使用 LINQ 返回数据。我想知道查询是否有可能抛出某种异常,因为查询执行被推迟并且它正在使用的变量已经被释放?

class Foo
{
    void Bar()
    {
       var bazResult = Baz();
       //... use bazResult here...
    }

    IEnumerable<int> Baz()
    {
        using (var d = new SomeDisposableSource())
        {
            return d.Select(e => e.Id);
        }
    }

顺便说一句,它一定已经以某种形式被问过,但我找不到明显的候选人。所以别踢我太狠:)

最佳答案

我认为如果对象被处置,你会有一个异常(exception)。 This thread 非常相似,并提供了几种处理问题的方法。最简单的方法是通过执行 return d.Select(e => e.Id).ToList() 来强制执行,但这可能不适合您

关于c# - 延期执行会不会先调用Dispose导致失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113614/

相关文章:

c# - 如何在检查条件 C# 后更新比较日期的数据库列

c# - 创建 "virtual"ScrollableControl?

javascript - 获取字段集中所有 jquery 输入的值

c# - 从 C# 使用时 F# 记录类型的相等性

c# - 如何获取通用扩展方法的 MethodInfo?

c# - 从 ViewModel 更改选定的选项卡并在 ViewModel 之间发送对象

c# - 关于 dotnet/runtime 的一个实现细节

c# - 创建具有无限参数的方法?

c# - 使用 LINQ 表达式获取多个嵌套字典除外

c# - 计算一个、两个和三个连续项目的总和的更好方法