我不知道怎么说出这个问题,很抱歉,如果它真的没有意义,但它应该在这里开始有意义。此外,如果解决方案真的非常简单,我很抱歉。谷歌无法理解我的要求(因为我误解了原因: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 :(得分: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)
您应该创建自己的集合类,该类继承Collection<OrderSelection>
并包含其他方法。
答案 2 :(得分:0)
我同意Slaks, 使用Generics并实现IEnumerable之类的接口,ICollection将使您的代码更清晰和可维护,例如,通过实现IEnumerable接口,可以使用foreach语句。 根据“OrderSelection”类的复杂性/大小,您可以决定执行排序等操作的最合适方式。 您可能需要查看:http://msdn.microsoft.com/en-us/library/system.collections.ilist.aspx,http://support.microsoft.com/kb/320727,
我希望这会有所帮助