c#类数据结构,依赖关系和指针问题

时间:2016-05-18 16:26:43

标签: c# arrays class constructor customization

编辑:

好的,让我试着解释一下:

我想管理来自外部源的点数据数组 一个数据类,我在这里存储这个数组:

public Data(int [,] point)

{
    SomeBlockingCollection.Add(point);
}

这里没问题。 现在让我们假设这个点有三个整数值:x,y,temp,所以如果你查看数组它会是这样的:

point[0,0] = 2; //This is P1
point[0,1] = 8; 
point[0,2] = 10;

point[1,0] = 30; //This is P2
point[1,1] = 5;
point[1,2] = 20;

等等......

现在我想要存储在我的Data对象中的是对这些点的引用。 从我的外部来源,将有另一个数组,它应该存储指向我的点数组的指针。

所以我有一个看起来像这样的课:

public Data(int [,] point, int[][] pointers)

{
    SomeBlockingCollection.Add(point);
}

如果您查看指针数组,它看起来就像那样(抱歉,我不知道如何正确地执行语法):

pointers[0] = [P1,P2,Pn];
pointers[1] = [P2,Pn,P1};

所以基本上我想从外面存储我的数据对象中的东西:

  1. 具有三个值的自定义点对象的数组
  2. 一个曲面数组,其中每个曲面由三个指针(表示我的第一个数组中的点)组成自定义点对象数组。

2 个答案:

答案 0 :(得分:1)

如果我每次想要为NewArray指定一个新点时都能正确理解,那么就创建一个Point Class的新实例。不要这样做!

而是这样做:

NewArray[m] = Points[n]

答案 1 :(得分:1)

如果我的问题正确,那么你真的想知道数组中的对象是否是相同的对象。如果你有类并且只使用引用,那么它们将是,例如

var array1 = new Point[] { new Point(...), new Point(...), new Point(...) };
var array2 = new Point[2];
array2[0] = array1[2];

在这种情况下,内存中仍有3个点,其中一个引用了两次。

如果我遵循您的要求,那么您将:

  1. 将您的所有积分读入大数组(如果您不知道初始大小,您也可以在列表中阅读它们。
  2. 创建“小”数组,这些数组将引用您已有的点
  3. 使用小数组初始化数据结构
  4. e.g。

    public class MyData
    {
       Point[] m_Points;
       public MyData(Point[] points)
       {
           m_Points = points;
       }
    }