作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个全局 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/
java.lang.Throwable 的哪些子类可能被空语句抛出? 通过短语“空语句”,我指的是“无”、“分号”和“分号”: // .... A(); B(); C(); try { //
我是一名优秀的程序员,十分优秀!