我在我的函数中创建了两个锯齿状数组:
double[][] x = new double[i][];
double[][] y = new double[j][];
我对它们执行某种操作,并希望由于该函数而返回它们。我怎么能这样做?
答案 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 [] []数组。