我创建了一个这样的类:
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
每个实例列表都有三个数字 - 即相同的列表。 不知怎的,而不是分开的列表,我有指向同一列表的指针。 你会如何将它与每个实例分成三个不同的独立列表?
答案 0 :(得分: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,当我使用调试器检查第二和第三类时,我也看到他们的列表只包含一个项目。
答案 1 :(得分:0)
似乎您在原帖中提供的代码没有任何问题。
点击here查看以下代码的实时输出。
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,因为所有实例共享相同的List。