Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 制作独立列表<;T>;_C#_List - Fatal编程技术网

C# 制作独立列表<;T>;

C# 制作独立列表<;T>;,c#,list,C#,List,我想在我的课堂上有两张分数表。一个用于原始加载的值,另一个用于修改的值。我在课堂上制作了两个单独的列表,但当我试图用change_points方法更改它时,start_pnts列表也会更改它的值。我不知道我做错了什么。对于这个简单问题上的任何帮助,我将不胜感激 class Polygon : Shape { private List<Point> points = new List<Point>(); private List&

我想在我的课堂上有两张分数表。一个用于原始加载的值,另一个用于修改的值。我在课堂上制作了两个单独的列表,但当我试图用change_points方法更改它时,start_pnts列表也会更改它的值。我不知道我做错了什么。对于这个简单问题上的任何帮助,我将不胜感激

  class Polygon : Shape
    {
        private List<Point> points = new List<Point>();
        private List<Point> start_pnts = new List<Point>();

       public override void add_point(Point pnt)
        {
            start_pnts.Add(pnt);
            points.Add(pnt);        
        }

        public override void change_points(double x, double y)
        {
            for (int i = 0; i < points.Count; i++)
            {
                points[i].x = start_pnts[i].x + x;
                points[i].y = start_pnts[i].y + y;
            }
        }
}
class多边形:形状
{
私有列表点=新列表();
私有列表开始\u pnts=新列表();
公共覆盖无效添加点(点pnt)
{
启动\u pnts.Add(pnt);
加分(pnt);
}
公共覆盖无效更改点(双x,双y)
{
对于(int i=0;i
您现在正在保存相同的引用,因此如果您更改一个对象,实际上您也在更改另一个对象,因为它包含相同的引用


你要做的就是复制原始对象。通常,您可以为此实现
ICloneable
接口,或者使用自己的自定义方法复制对象。另一种选择是将类设为结构,这将使其本质上成为值的副本。

您现在保存的是相同的引用,因此如果更改一个对象,实际上也会更改另一个对象,因为它包含相同的引用


你要做的就是复制原始对象。通常,您可以为此实现
ICloneable
接口,或者使用自己的自定义方法复制对象。另一个选项是将类设为结构,这将使其本质上成为值的副本。

实际上,您正在保存相同的引用,因此很明显,您将得到反映到2个列表中的更改。我将建议使用点结构而不是类,因此您将使用复制值而不是引用,或者按照建议实现
ICloneable
接口,在那里实现复制逻辑

实际上,您正在保存相同的引用,因此很明显,您将得到反映到2个列表中的更改。我将建议使用点结构而不是类,因此您将使用复制值而不是引用,或者按照建议实现
ICloneable
接口,在那里实现复制逻辑

你是100%正确的,我关注的是列表,而不是我要添加的内容。。。谢谢你的回答。你是100%正确的,我关注的是列表,而不是我要添加的内容。。。谢谢你的回答。