如何将枚举作为方法参数传递?

时间:2017-06-06 10:18:59

标签: c# enums

任务是编写一个可以对int数组进行排序的简单方法(按升序或降序排列 - 应设置为此方法的枚举类型参数)。我已经编写了方法本身和枚举,但我不知道如何将枚举设置为方法参数:(

很高兴能得到你的帮助,伙计们,因为我对编码完全陌生。

class Program
{

    public enum options
    {
        UpSortOption,
        DownSortOption
    }

    public static void Main(string[] args)
    {
        int[] arr = new int[] { 3, 8, 0, 2, 16 };
    }

    static void orderArray(int [] array, options op)
    {
        switch(op)
        {
            case options.UpSortOption:
                Array.Sort(array);
                foreach (int number in array)
                {
                    Console.Write(number + " ");
                }
                break;

            case options.DownSortOption:
                Array.Sort(array);
                Array.Reverse(array);
                foreach (int number in array)
                {
                    Console.Write(number + " ");
                }
                break;

        }
    }
}

4 个答案:

答案 0 :(得分:3)

该方法的签名看起来很好,现在您想通过传递类型为整数数组的第一个参数和类型为options的第二个参数来调用此方法,您可以使用以下代码:

orderArray(arr,options.UpSortOption);

或者您可以声明类型options的变量并传递该变量,您必须对该案例进行的更改将是:

options optionsVariable = options.DownSortOption;
orderArray(arr,optionsVariable);

答案 1 :(得分:1)

让我们退一步看看它是否有助于您理解。

如果你有一个带字符串和int的方法

string MyMethod(string str, int num)
{
    // Do something
}

你会像这样使用它

string rslt = MyMethod("Hello", 123);

你在这里得到的东西是某些东西,对它有所作为,并给你一些回报。在这种情况下,MyMethod会使用stringint,对其进行操作并返回string,然后您调用rslt

您的示例遵循相同的基本模式,因此您需要使用您的方法 - orderArray并为其提供它想要的两件事 - 一个int数组和一个像这样的选项

int[] arr = new int[] { 3, 8, 0, 2, 16 };

orderArray(arr, options.UpSortOption);

或者,你可以像创建一个字符串一样创建一个选项,然后像这样调用你的方法

int[] arr = new int[] { 3, 8, 0, 2, 16 };
options myOption = options.UpSortOption;

orderArray(arr, myOption);

为了充分说明作为参数的枚举与字符串没有任何不同,您可以像这样修改方法

static void orderArray(int[] array, string op)
{
    if (op == "UpSortOption")
    {
        Array.Sort(array);
        foreach (int number in array)
        {
            Console.Write(number + " ");
        }
    }
    else
    {
        Array.Sort(array);
        Array.Reverse(array);
        foreach (int number in array)
        {
            Console.Write(number + " ");
        }
    }
}

然后像这样称呼它

int[] arr = new int[] { 3, 8, 0, 2, 16 };
string myOption = "UpSortOption";

orderArray(arr, myOption);

答案 2 :(得分:0)

这是您将其作为参数传递的方式

orderArray(int [] array, typeof(options)){
    //Beep bap boop
}

希望这有助于你。

答案 3 :(得分:0)

正是这就是你如何将Enum设置为方法参数。

要调用此方法,请使用:

orderArray(arr, options.UpSortOption);

您还可以为变量指定枚举值,并使用它来调用方法:

options sortOpt = options.UpSortOption;
orderArray(arr, sortOpt);

您还可以将整数转换为枚举:

orderArray(arr, (options)0);

OR

int opt = 0;
orderArray(arr, (options)opt);

记住,如果没有另外指定,则第一个元素为0,第二个为1,依此类推。

顺便说一下,您应该使用 PascalCase 来命名枚举类型,例如:

public enum Options
{ ... }