public class MyList<T> : List<T> {
public MyList(List<T> list) {
this = list; // this is basically what I want, but doesn't work
base = list; // this also doesn't work
}
}
任何解决方案?或者,我正在努力实现一个糟糕的主意?
动机:我想将自定义函数添加到List对象。
public class MyList<T> : List<T> {
public MyList(List<T> list) {
this = list; // this is basically what I want, but doesn't work
base = list; // this also doesn't work
}
}
任何解决方案?或者,我正在努力实现一个糟糕的主意?
动机:我想将自定义函数添加到List对象。
你能不能做:
public MyList(List<T> list) : base(list)
另外,不能使用List对象上的扩展方法?
好吧,我会!是的,就是这么简单!谢谢! 至于扩展方法,我敢肯定我也可以使用这些方法,但直到现在我才知道它们是什么...... 我将阅读扩展方法并稍后决定如何实现它。再次感谢! – 2010-02-12 11:37:41
如果您使用.Net framework 3.5,那么在列表中定义扩展方法会不会更容易?财产以后像...
public static class MyListExtensionClass
{
public static void MyList<T>(this List<T> list)
{
// Your stuff
}
}
完全是这样做的扩展方法! – 2010-02-12 11:38:12
在某些情况下,这肯定是要走的路。感谢这个简单的例子。 – 2010-02-12 11:42:45
公共MYLIST(名单列表):基地(名单)
这将调用基类的构造函数如下(在这种情况下列表):
public List(IEnumerable<T> collection);
public class MyList<T> : List<T>
{
public MyList(List<T> list)
{
AddRange(list);
}
}
对于未来的个人参考:扩展方法并不是那么棒。从MSDN开始:“在你的代码中,你用实例方法的语法调用了扩展方法,但是编译器生成的中间语言(IL)将你的代码转换为静态方法中的一个调用,所以封装的原理并不是真的存在事实上,扩展方法不能以它们扩展的类型访问私有变量。“ 即,它只是在实例上调用一个静态函数,但语法上是糖衣。 – 2010-02-17 22:07:47