1

是否可以向 List 等基类添加方法?还是其他人?如果它具有 MyClass 类型,我真的需要向泛型列表类添加方法。像这样: List<MyClass>.FindCoolStuff()List<MyClass>.SetValueByName()

谢谢

4

3 回答 3

8

不,但您可以使用扩展方法

public static class ListExtensions
{
    public static IEnumerable<T> DoCoolStuff<T>(this List<T> collection)
    {
        // Do cool stuff
    }
}

来自 MSDN:在您的代码中,您使用实例方法语法调用扩展方法。

var awesomeList = new List<string>();

var awesomestuff = awesomeList.DoCoolStuff();
于 2013-09-17T13:32:06.037 回答
2

虽然您不能向类添加方法,但您可以使用扩展方法(http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx)给人一种这样做的错觉。请注意,这些方法只会出现在该类或接口的实例上,而不是类型上(如静态方法)。

于 2013-09-17T13:32:10.183 回答
1

如果你想限制它只为 MyClass 工作,你可以使用 where 关键字;所以使用上面的例子

public static class ListExtensions
{
    public static IEnumerable<T> DoCoolStuff<T>(this List<T> collection) where T : MyClass
    {
        // Do cool stuff
    }
}
于 2013-09-17T13:44:39.043 回答