如何添加方法来操作类对象数组?

Toa*_*ums 2 c# arrays methods class

我不知道怎么说这个问题,很抱歉,如果它真的没有意义,但它应该在这里开始有意义.此外,如果解决方案真的非常简单,我很抱歉.谷歌无法理解我在问什么(probs因为我错了:P)

所以我写了一个我打电话的课 OrderSelection

在我的程序中,我需要有一个OrderSelection对象数组,我需要对这个数组执行操作(重新排序,排序等).

我现在正在做的是保持OrderSelection类中的方法,例如,接受您想要重新排序的数组.

就像是:

public void reorder(OrderSelection[] ord, int switchX, int switchY){....}
Run Code Online (Sandbox Code Playgroud)

但我想要做的是:

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
Run Code Online (Sandbox Code Playgroud)

所以是的...我如何添加这些我想要应用于我的类对象数组的函数?

谢谢!

Sco*_*pey 6

您正在寻找扩展方法. 这是MSDN文档.

编写扩展方法如下所示:

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

扩展方法通常在完全独立的类中定义.
此外,扩展方法还需要两件事:

  • 整个班级必须是 static
  • 每个扩展方法的第一个参数必须包含this前面的关键字

使用上面的代码,您的示例代码将编译正常:

OrderSelection[] order = new OrderSelection[10];
//do stuff
order.reorder(1,2);
Run Code Online (Sandbox Code Playgroud)

这与编写以下内容完全相同:

OrderSelection[] order = new OrderSelection[10];
//do stuff
OrderSelectionExtensionMethods.reorder(order, 1, 2);
Run Code Online (Sandbox Code Playgroud)