2011-12-28 36 views
2

我不知道如何說出這個問題,所以很抱歉,如果它真的沒有意義,但它應該在這裏開始有意義。另外,如果解決方案真的很簡單,我很抱歉。谷歌不可能明白我在問(probs因爲我是問錯了:P)如何添加方法來操作類對象的數組?

所以我寫了一個類,我叫OrderSelection

在我的計劃,我需要有OrderSelection對象的數組,和我需要對這個數組執行操作(重新排序,排序等)。

我現在正在做的是保留OrderSelection類中的方法,例如接受其中包含要重新排序的數組。

類似:

public void reorder(OrderSelection[] ord, int switchX, int switchY){....} 

,但我希望能夠做的是:

OrderSelection[] order = new OrderSelection[10]; 
//do stuff 
order.reorder(1,2);//which is WAY better than order[0].reorder(order, 1,2) as a horrid example 

所以呀......我怎麼可以添加這些功能,我想申請我班的對象數組?

謝謝!

+0

。網絡公共成員名稱應該是UpperCamelCased。 – SLaks 2011-12-28 01:08:34

+0

不太清楚你在說什麼。我對這種東西的「常見做法」不太滿意。 – Toadums 2011-12-28 01:12:01

回答

5

您要找的擴展方法Here's the MSDN documentation.

寫入擴展方法是這樣的:

public static class OrderSelectionExtensionMethods 
{ 
    public static void reorder(this OrderSelection[] orders, int x, int y) 
    { 
     // Do something with each order 
    } 
} 

擴展方法通常是在一個完全獨立的類中定義。
此外,需要用於擴展方法兩件事情:

  • 整個類必須是static
  • 每個擴展方法的第一個參數必須在它

利用上述的關鍵字是this代碼,你的示例代碼會編譯得很好:

OrderSelection[] order = new OrderSelection[10]; 
//do stuff 
order.reorder(1,2); 

這是確切的寫法如下:

OrderSelection[] order = new OrderSelection[10]; 
//do stuff 
OrderSelectionExtensionMethods.reorder(order, 1, 2); 
+1

+1。如果我在PC上,我會打敗你... – Adam 2011-12-28 01:11:24

+0

@codesparkle哈哈,我確切地知道你的意思!該死的你,小智能手機鍵盤,該死的你,自動更正! – 2011-12-28 01:19:37

+0

啊。它的真實。謝謝!!!! – Toadums 2011-12-28 01:20:32

1

你應該繼承Collection<OrderSelection>幷包含其他方法,你自己的集合類。

+0

是的,這絕對是比創建擴展方法更好的解決方案。 – 2011-12-28 01:21:37

+0

@ScottRippey你是諷刺嗎?大聲笑的可擴展的東西很容易 – Toadums 2011-12-28 01:24:07

+0

@Toadums不諷刺。我喜歡創建擴展方法,但它不像創建自定義集合那樣有組織和重構。一個自定義集合說:「這裏有一堆對象,和一堆你可以用這些對象做的標準事情」。但擴展方法說:「這裏有一堆用這些對象做標準事物的捷徑」。在導入適當的名稱空間之前,您永遠不知道是否存在擴展方法,但收集方法始終存在。他們需要大約相同數量的代碼。 – 2011-12-28 01:31:20

0

我同意Slaks, 通過使用泛型和實現接口(如IEnumerable),ICollection將使您的代碼更加清潔和可維護,例如通過實現IEnumerable接口,使得使用foreach語句成爲可能。 根據「OrderSelection」類的複雜性/大小,您可以決定執行排序等操作的最合適方式。 你可能想看看:http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspxhttp://support.microsoft.com/kb/320727

我希望這有助於

相關問題