所以我想知道一个方法是否可以返回多个值? 我正在尝试编写一个返回数组最低和最大值的程序:
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?
}
谢谢!
答案 0 :(得分:6)
答案只是否,您无法使用return
语句发送多个参数。
但使用参数修饰符out
逻辑 YES 。
out
关键字导致参数通过引用传递。要使用out参数,方法定义和调用方法都必须明确使用out关键字。
来自MSDN:
虽然作为out参数传递的变量不一定是 在传递之前初始化,需要调用方法 在方法返回之前分配一个值。
因此,在离开函数之前,您应该为lowest
和greatest
参数分配值,如果您没有初始化它们,那么编译器会警告您。
试试这个:
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)
在调用上述方法后,您的lowest
和greatest
变量将按GetMinMaxValue()
方法分配值。
答案 1 :(得分:4)
是的,有很多方法可以做到:
Tuple<T1,T2>
out
或ref
参数。在前三种情况下,您返回一个对象,但在其中填充多个值。在最后一种情况下,您根本不会返回值,而是依赖于将数据传递回调用者的替代方法。
答案 2 :(得分:0)
没有
但是,返回类型不必是原始数字。 您可以返回一个列表/对象数组,或者您可以返回一个在其中包含多个属性的对象。