gpt4 book ai didi

c# - 如果长度恰好为一个,或者否则为默认值,我如何获得 IEnumerable 的第一个值?

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

我想要类似 IEnumerable.FirstOrDefault 的东西,但我想要在 length != 1 时返回默认值。像 v.Count() == 1 这样的东西? v[0] :默认值。但我更愿意在不将整个可枚举对象转换为数组的情况下这样做。获得这种行为的最佳方式是什么?

最佳答案

Microsoft 对 Enumerable.FirstOrDefault 的实现直接与底层枚举器一起工作。你的也可以:

public static T FirstIfOnlyOne<T>(this IEnumerable<T> source, T defaultValue = default(T))
{
// (Null check and IList<T> optimization omitted...)

using (IEnumerator<T> enumerator = source.GetEnumerator())
{
if (enumerator.MoveNext()) // Is there at least one item?
{
T item = enumerator.Current; // Save it.
if (!enumerator.MoveNext()) // Is that it?
return item;
}
}
return defaultValue;
}

这可能是最有效的实现方式。

关于c# - 如果长度恰好为一个,或者否则为默认值,我如何获得 IEnumerable 的第一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323752/

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