Junior — Middle
Kā īstenot metodi LastOrDefault kolekcijai, nezinot iepriekš elementu tipu?
sobes.tech AI
Atbilde no AI
Чтобы реализовать метод LastOrDefault для коллекции, не зная заранее тип элементов, можно использовать обобщения (generics) и LINQ в C#.
Если коллекция реализует IEnumerable<T>, то можно написать универсальный метод:
public static T LastOrDefaultGeneric<T>(IEnumerable<T> source)
{
if (source == null) throw new ArgumentNullException(nameof(source));
T last = default;
bool foundAny = false;
foreach (var item in source)
{
last = item;
foundAny = true;
}
return foundAny ? last : default;
}
Этот метод перебирает все элементы и возвращает последний, либо значение по умолчанию, если коллекция пуста.
Если тип элементов неизвестен и коллекция не обобщённая (например, IEnumerable), то можно использовать object:
public static object LastOrDefaultNonGeneric(IEnumerable source)
{
if (source == null) throw new ArgumentNullException(nameof(source));
object last = null;
bool foundAny = false;
foreach (var item in source)
{
last = item;
foundAny = true;
}
return foundAny ? last : null;
}
Таким образом, можно получить последний элемент без знания типа заранее.