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