List <t> AddToFront(T对象)的扩展方法如何?</t>

时间:2011-07-09 02:51:11

标签: c# list extension-methods

我想为List类编写一个扩展方法,该方法接受一个对象并将其添加到前面而不是后面。扩展方法真让我迷惑。有人可以帮我解决这个问题吗?

myList.AddToFront(T object);

2 个答案:

答案 0 :(得分:79)

List<T>已经有一个Insert方法,它接受您希望插入对象的索引。在这种情况下,它是0.你真的打算重新发明那个轮子吗?

如果你这样做,你就会这样做

public static class MyExtensions 
{
    public static void AddToFront<T>(this List<T> list, T item)
    {
         // omits validation, etc.
         list.Insert(0, item);
    }
}

// elsewhere

List<int> list = new List<int>();
list.Add(2);
list.AddToFront(1);
// list is now 1, 2

但是,再一次,你没有获得任何你没有的东西。

答案 1 :(得分:0)

您可以使用 IList 接口来代替使用 List,该接口为更多集合(如 BindingList 或更多)提供扩展方法。这是我的列表扩展方法

语法:

public static class ExtensionMethods
{
    public static void AddToFront<T>(this IList<T> list, T item)
    {
         if(list is null) throw new ArgumentNullException("Can't add items to null List");
         list.Insert(0, item);
    }

    public static bool IsNullOrEmpty<T>(this IList<T> list)
    {
         if(list is null || list.Count == 0) return true;
         return false;
    }
}