2012-02-18 33 views
1

我的代碼看起來像這樣:如何在C#中執行特定列表元素的方法?

public class Artikel : List<Datenschicht.tb_Artikel> 
{ 
    .... 
    public void DoSomething() 
    { 
    .. 
    } 
} 

現在我想做某事這樣的:

Artikel[0].DoSomething(); 

我怎樣才能得到這個數(0)的方法 「DoSomething的」?

謝謝你的幫助!

+0

它是有缺陷的,或者你讓一個illposed問題 – Mackintoast 2012-02-18 17:18:21

+0

您的意思是寫'DoSomething的(ARTIKEL [0]);'? – BrokenGlass 2012-02-18 17:22:44

+0

我認爲你的問題不足以讓任何人給你一個答案。你需要說明你的意圖更清楚。具體來說,你正在試圖用Artikel [0]做什麼。 – 2012-02-18 17:28:48

回答

0

這聽起來像是你想要tb_Artikel的實例知道它在List<>結構中佔據了什麼索引。如果是這樣,這是不可能的。對象沒有任何有關其容器的知識。主要是因爲在任何給定時間對象可以包含在多個List<>中。那麼它會選擇哪個號碼?

儘管一個選項是簡單地讓DoSomething直接取int的值。然後讓它從自己選擇​​的值來進行操作

void DoSomething(int index) { 
    this[index].DoSomethingElse(); 
} 
0

Artikel[0]Datenschicht.tb_Artikel類型,所以我很確定從那裏將不會訪問DoSomething方法。

0

因爲對象不知道它在數組中。

如果您需要索引,可以將其作爲參數傳入。

1

這似乎是面向對象問題的基本誤解。 'Artikel'類型聲明'DoSomething'。 'Datenschicht.tb_Artikel'沒有。 Artikel [0]返回'Artikel'實例中的第一個對象。項目被聲明爲'Datenschicht.tb_Artikel'類型,因此沒有DoSomething方法。除非你在那裏放一個。

如果意圖是讓某個方法對指定項目執行某些操作,則可以編寫一個DoSomething(int i)方法,該方法接受索引並檢索它,然後執行某些操作。

0

我同意在這一個wasabi。如果在程序中這是一個明智的做法,則可以將void DoSomething()作爲靜態擴展方法執行到Datenschicht.tb_Artikel

相關問題