试图从program.cs调用一个类

时间:2014-02-19 15:13:14

标签: c# visual-studio-2010 quicksort

我创建了一个类来快速排序一个int数组,现在我试图从程序中调用该类,但我不断收到错误,该类如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace QuicksortSimpel
{
    class Class1
    {
        public static void Quicksort(IComparable[] elements,int left, int right)
        {

            //Define i and j and pick an pivot to compare other numbers
            int i = left, j = right;
            IComparable pivot = elements[left + (left + right) / 2];

            //Compare numbers and then compare to pivot
            while (i <= j)
            {
                while (elements[i].CompareTo(pivot) < 0)
                {
                    i++;
                }

                while (elements[j].CompareTo(pivot) > 0)
                {
                    j--;
                }

                if (i <= j)
                {
                    // Switch
                    IComparable tmp = elements[i];
                    elements[i] = elements[j];
                    elements[j] = tmp;

                    i++;
                    j--;
                }
            }
            // repeat
            if (left < j)
            {
                Quicksort(elements, left, j);
            }

            if (i < right)
            {
                Quicksort(elements, i, right);
            }
        }
    }
}

我试着这样称呼它:

numbers = Class1.Quicksort(numbers);

我得到的错误是:

方法quicksort没有重载需要1个参数。

2 个答案:

答案 0 :(得分:4)

这是因为Class1.Quicksort();接受了三个参数而你正在传递1.而且它也没有返回任何内容,因此numbers = Class1.Quicksort();无效。

您可以重载或设置可选/默认参数(感谢Silo)。

public static void Quicksort(IComparable[] elements,int left = 0, int right = 0)

public static void Quicksort(IComparable[] elements)
{
    QuickSort(elements, 0,0);
}

答案 1 :(得分:0)

你得到这个编译器错误,因为类方法QuickStart()期望三个参数,同时你只提供一个参数。

你的类不是静态的,为什么你用类名访问它?您需要创建Class1的对象,然后在该对象上调用sort方法。我还注意到你将这个方法的返回值赋给某个​​变量但是在函数定义中你没有返回任何东西?