有两种方法,其中一种方法在 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/