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

c#类数据结构、依赖关系和指针问题,c#,arrays,class,constructor,customization,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,

编辑:

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

我想管理来自外部源的点的数据数组,使用 一个数据类,我在其中存储此数组,如下所示:

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;
等等

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

所以我有一个类似这样的类:

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

{
    SomeBlockingCollection.Add(point);
}
如果您查看指针数组,它会是这样的(抱歉,我不知道如何正确执行语法):

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

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

  • 如果我每次都正确理解了您想要为NewArray分配一个新的点,那么您就创建了point类的一个新实例。别这样

    而是这样做:

    NewArray[m] = Points[n]
    

    如果我每次都正确理解了您想要为NewArray分配一个新的点,那么您就创建了point类的一个新实例。别这样

    而是这样做:

    NewArray[m] = Points[n]
    

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

    var array1 = new Point[] { new Point(...), new Point(...), new Point(...) };
    var array2 = new Point[2];
    array2[0] = array1[2];
    
    在这种情况下,内存中仍有3个点,其中一个点被引用了两次

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

  • 将所有点读取到大数组中(如果不知道初始大小,也可以在列表中读取)
  • 创建“小”数组,该数组将引用已存在的点
  • 使用小数组初始化数据结构
  • e、 g


    如果我答对了你的问题,那么你真的想知道数组中的对象是否是相同的对象

    var array1 = new Point[] { new Point(...), new Point(...), new Point(...) };
    var array2 = new Point[2];
    array2[0] = array1[2];
    
    在这种情况下,内存中仍有3个点,其中一个点被引用了两次

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

  • 将所有点读取到大数组中(如果不知道初始大小,也可以在列表中读取)
  • 创建“小”数组,该数组将引用已存在的点
  • 使用小数组初始化数据结构
  • e、 g


    但是我如何在构造函数或数据类中做到这一点呢?我从外部源获得的数据肯定不是点类,我的问题是我需要以某种方式在c#中创建一个点类,然后将其交给构造函数,这样我就可以说“data n1=新数据(Points[],string,int,…)我已经更新了我的答案,但我不能100%确定我是否理解你想要实现的目标…我已经更新了我的帖子,我希望它现在更容易理解?提前感谢你!为什么你需要一个二维数组作为你的点?创建点数组更为清晰,就像我的示例中,点将有x,y,z。它不应该是一个二维数组从性能角度来看,差异很大(除非您有一些关键操作),但操作起来会容易得多,而且您可以进一步传递对任何给定点的引用。但我如何在构造函数或数据类中做到这一点?我从外部源获得的数据肯定不会是点类,我的问题是我需要以某种方式在c#中创建一个点类,然后将其交给构造函数,以便我可以说“数据n1=新数据(点[],字符串,整数,…)"我已经更新了我的答案,但我不能100%确定我是否理解你想要实现的目标…我已经更新了我的帖子,我希望它现在更容易理解?提前感谢你!为什么你需要一个二维数组作为你的点?创建点数组更为清晰,就像我的示例中,点将有x,y,z。它不应该是一个二维数组从性能的角度来看,这有很大的不同(除非您有一些关键的操作),但操作起来会容易得多,并且您将能够进一步传递对任何给定点的引用。