Возможны разные варианты решения вашей проблемы.Одно единственное решение не может решить вашу проблему
. Давайте обсудим сценарий решения, который соответствует вашему требованию
Сценарий 1: Если вы хотите вернуться последнимэлемент, и если последний элемент отсутствует, то вы хотите вернуть значение по умолчанию этого типа данных, тогда вы можете использовать return default(T);
public static T RemoveLast<T>(this List<T> list)
{
if (list.Count > 0)
{
var item = list[list.Count - 1];
list.RemoveAt(list.Count - 1);
return item;
}
return default(T);
}
Сценарий 2: Если вы хотите сделать эту функциютолько для типа значения, вы можете сделать возвращаемое значение Nullable, как показано ниже
public static Nullable<T> RemoveLast<T>(this List<T> list) where T:struct
{
if (list.Count > 0)
{
var item = list[list.Count - 1];
list.RemoveAt(list.Count - 1);
return (T)item;
}
return null;
}
Здесь указание типа T является структурой необходимо, так как ссылочные типы по умолчанию обнуляются и делают их обнуляемыми, что не имеет никакого смысла для компилятора, так что компилятор не будетразрешить это