从函数返回2个数组

时间:2014-11-13 21:22:05

标签: c#

我在我的函数中创建了两个锯齿状数组:

double[][] x = new double[i][];
double[][] y = new double[j][];

我对它们执行某种操作,并希望由于该函数而返回它们。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

可以返回一组锯齿状数组:double[][][]

public double[][][] GetData(int i, int j)
{
    double[][] x = new double[i][];
    double[][] y = new double[j][];

    return new [] {x, y};
}

但是定义一个类来给出结果上下文可能更有意义。如果你返回两个数组,它们是什么意思?它们总是处于相同的顺序吗?通过返回一个数组,您可以留下很多东西让消费者了解返回类型的含义。另一方面,一个类将提供上下文:

public TwoArrays GetData(int i, int j)
{
    double[][] x = new double[i][];
    double[][] y = new double[j][];

    return new TwoArrays {X = x, Y = y};
}

public class TwoArrays
{
    public double[][] X  {get; set;}
    public double[][] Y  {get; set;}
}

答案 1 :(得分:-1)

元组也是一个完全有效的选项。有些人不喜欢他们作为一个意见问题,他们并不是公共API的绝佳选择,但是如果不在命名空间中添加另一个类,它们就很有用。你可以过度使用它们,四元组和五元组甚至超过我对它们的容忍度

        double[][] x = new double[i][];
        double[][] y = new double[j][];
        // Work your magic
        return new Tuple<double[][], double[][]>(x, y);

Item1和Item2现在将是你的double [] []数组。