我的代碼看起來像這樣:如何在C#中執行特定列表元素的方法?
public class Artikel : List<Datenschicht.tb_Artikel>
{
....
public void DoSomething()
{
..
}
}
現在我想做某事這樣的:
Artikel[0].DoSomething();
我怎樣才能得到這個數(0)的方法 「DoSomething的」?
謝謝你的幫助!
我的代碼看起來像這樣:如何在C#中執行特定列表元素的方法?
public class Artikel : List<Datenschicht.tb_Artikel>
{
....
public void DoSomething()
{
..
}
}
現在我想做某事這樣的:
Artikel[0].DoSomething();
我怎樣才能得到這個數(0)的方法 「DoSomething的」?
謝謝你的幫助!
這聽起來像是你想要tb_Artikel
的實例知道它在List<>
結構中佔據了什麼索引。如果是這樣,這是不可能的。對象沒有任何有關其容器的知識。主要是因爲在任何給定時間對象可以包含在多個List<>
中。那麼它會選擇哪個號碼?
儘管一個選項是簡單地讓DoSomething
直接取int
的值。然後讓它從自己選擇的值來進行操作
void DoSomething(int index) {
this[index].DoSomethingElse();
}
Artikel[0]
是Datenschicht.tb_Artikel
類型,所以我很確定從那裏將不會訪問DoSomething
方法。
因爲對象不知道它在數組中。
如果您需要索引,可以將其作爲參數傳入。
這似乎是面向對象問題的基本誤解。 'Artikel'類型聲明'DoSomething'。 'Datenschicht.tb_Artikel'沒有。 Artikel [0]返回'Artikel'實例中的第一個對象。項目被聲明爲'Datenschicht.tb_Artikel'類型,因此沒有DoSomething方法。除非你在那裏放一個。
如果意圖是讓某個方法對指定項目執行某些操作,則可以編寫一個DoSomething(int i)方法,該方法接受索引並檢索它,然後執行某些操作。
我同意在這一個wasabi。如果在程序中這是一個明智的做法,則可以將void DoSomething()
作爲靜態擴展方法執行到Datenschicht.tb_Artikel
。
它是有缺陷的,或者你讓一個illposed問題 – Mackintoast 2012-02-18 17:18:21
您的意思是寫'DoSomething的(ARTIKEL [0]);'? – BrokenGlass 2012-02-18 17:22:44
我認爲你的問題不足以讓任何人給你一個答案。你需要說明你的意圖更清楚。具體來說,你正在試圖用Artikel [0]做什麼。 – 2012-02-18 17:28:48