方法可以返回多个值吗?

时间:2014-02-22 14:29:58

标签: c#

所以我想知道一个方法是否可以返回多个值? 我正在尝试编写一个返回数组最低和最大值的程序:

    public int GetMinMaxValue(int[] numbers)
    {
        int lowest;
        int greatest;

        foreach (int item in numbers)
        {
            // some code assigning the values
        }

        return lowest; // and is it possible to return greatest too?
    }

谢谢!

3 个答案:

答案 0 :(得分:6)

答案只是,您无法使用return语句发送多个参数。

但使用参数修饰符out逻辑 YES

out关键字导致参数通过引用传递。要使用out参数,方法定义和调用方法都必须明确使用out关键字。

来自MSDN

  

虽然作为out参数传递的变量不一定是   在传递之前初始化,需要调用方法   在方法返回之前分配一个值。

因此,在离开函数之前,您应该为lowestgreatest参数分配值,如果您没有初始化它们,那么编译器会警告您。

试试这个:

public int GetMinMaxValue(int[] numbers,out int lowest,out int greatest)
{
    lowest=0; //not required if there is a definite assignment happens in your code
    greatest=0;//not required if there is a definite assignment happens in your code
    foreach (int item in numbers)
    {
        // some code assigning the values
    }

}

您可以按以下方式调用上述方法:

int lowest; //not assigned to any value
int greatest;//not assigned to any value
GetMinMaxValue(numbers,out lowest,out greatest)

在调用上述方法后,您的lowestgreatest变量将按GetMinMaxValue()方法分配值。

答案 1 :(得分:4)

是的,有很多方法可以做到:

  • 返回一个数组,
  • 返回Tuple<T1,T2>
  • 返回您为了从方法中返回多个内容而定义的自定义类
  • 使用outref参数。

在前三种情况下,您返回一个对象,但在其中填充多个值。在最后一种情况下,您根本不会返回值,而是依赖于将数据传递回调用者的替代方法。

答案 2 :(得分:0)

没有

但是,返回类型不必是原始数字。 您可以返回一个列表/对象数组,或者您可以返回一个在其中包含多个属性的对象。