使用 Linq C# 时出现资源泄漏

问题描述 投票:0回答:1

我在下面的代码中从 R.WorksheetColumn() 获取资源泄漏。非常感谢任何帮助。

var columns = (from R in RowCellsUsed                                        
               select new
               {
                   Column = R.WorksheetColumn().ColumnLetter(),
                   Name = R.Value.ToString().Trim() 
               }).ToDictionary(s => s.Name, s => s.Column);

在这种情况下,如何消除资源泄漏。 我如何在 linq 中调用 R.WorksheetColumn().Dispose?

c# linq-to-sql
1个回答
0
投票

您需要处置实现

IDisposable
的对象。
using
语句通常是执行此操作的最佳方法。如果
R.WorksheetColumn()
返回一个一次性物品,你可以这样做:

var columns = RowCellsUsed
    .Select(r => {
        using (var column = r.WorksheetColumn())
        {
            var columnLetter = column.ColumnLetter();
            var name = r.Value.ToString().Trim();
            return new
            {
                Column = columnLetter,
                Name = name
            };
        }
    })
    .ToDictionary(
        s => s.Name,
        s => s.Column
    );
© www.soinside.com 2019 - 2024. All rights reserved.