Sobes.tech
Junior — Middle
90

Элементтердің түрін алдын ала білмей, коллекция үшін LastOrDefault әдісін қалай жүзеге асыруға болады?

AI-дан жауап

sobes.tech 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;
}

Таким образом, можно получить последний элемент без знания типа заранее.