-3

我创建了一个这样的类:

public class MyClass
 {
     public List<int> Params = new List<int>();

      public void Load(int data)
        {
            Params.Add(data);
        }
}

然后我启动,比方说,类的三个实例。

MyClass one = new MyClass();
MyClass two = new MyClass();
MyClass three = new MyClass();

添加带有数据的列表:

one.Load(10);
two.Load(50);
three.Load(100);

然后令人惊讶的是,当我检查时:

one.Params.Count();

计数是 3,也

two.Params.Count(); 

也是3

每个实例列表都有三个数字 - 即相同的列表。不知何故,我得到了指向同一个列表的指针,而不是单独的列表。您如何将每个实例分成三个不同的独立列表?

4

2 回答 2

0

默认情况下应该是这样。您确定您没有将类或字段设为静态吗?

使用以下代码

    public class MyClass {
        public List<int> Params = new List<int>();
        public void Load(int data) {
            Params.Add(data);
            }
        }

class Program {
    static void Main(string[] args) {
        var one = new MyClass();
        var two = new MyClass();
        var three = new MyClass();

        one.Load(25);
        two.Load(50);            
        three.Load(75);

        Console.WriteLine(one.Params.Count());

        }
     }

我得到了 1 的预期答案,当我使用调试器检查类 2 和 3 时,我还看到它们的列表只包含 1 项。

于 2013-10-07T00:37:25.677 回答
0

您在原始帖子中提供的代码似乎没有任何问题。

单击此处查看以下代码的实时输出。

using System.IO;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
       MyClass one = new MyClass();
        MyClass two = new MyClass();
        MyClass three = new MyClass();

        one.Load(10);
        two.Load(50);
        three.Load(100);

        System.Console.WriteLine("One.Count  " + one.Params.Count);
        System.Console.WriteLine("Two.Count " +two.Params.Count);
        System.Console.WriteLine("Three.Count  "+ three.Params.Count);
    }
}

public class MyClass
 {
     public List<int> Params = new List<int>();

      public void Load(int data)
        {
            Params.Add(data);
        }
}

所有 One.Params.Count、Two.Params.Count 和 Three.Params.Count 都返回 1。

正如评论中所指出的,您可能将 Params 声明为静态。在这种情况下,输出将为 3,因为所有实例共享同一个列表。

于 2013-10-07T00:37:53.960 回答