gpt4 book ai didi

c# - 泛型方法可能会抛出异常

转载 作者:行者123 更新时间:2023-11-30 19:24:25 25 4
gpt4 key购买 nike

我有一个全局 linq 扩展方法,它从给定列表中检索最有代表性的元素。这是示例:

public static T GetMostRepresentedElement<T, U>(this IEnumerable<U> _Collection, Func<U, T> _GetElem)
{
return _Collection.GroupBy(e => _GetElem(e))
.Select(f => new
{
Count = f.Count(),
Elem = f.Key
})
.OrderByDescending(g => g.Count)
.First()
.Elem;
}

碰巧这段代码抛出异常:

At First: Sequence contains no elements StackTrace: at System.Linq.Enumerable.First[TSource](IEnumerable1 source) at IHMTools.Utilities.LinqExtensions.GetMostRepresentedElement[T,U](IEnumerable1 _Collection, Func2 _GetElem)

我怎么可能使这个方法安全?我是否必须修复此方法,还是最好小心我发送给该方法的数据?

最佳答案

如果集合为空,First() 将抛出您收到的异常。您可以使用 FirstOrDefault() 返回空情况下 T 的默认值。

由于您的 LINQ 相当复杂,您最好提前退出来处理这种情况,然后您还可以避免空情况,正如评论者所指出的那样。类似if (!_Collection.Any()) return default(T);

关于c# - 泛型方法可能会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com