我找到了解决我的问题的方法,但我想知道是否有人可以解释为什么会发生这种情况。
我有一个类DataCollector。
public class DataCollector
{
public string Name { get; set; }
public string Group { get; set; }
public int Count { get; set; }
public Brush Color { get; private set; }
public DataCollector(string name, string group, int count, Brush color)
{
Name = name;
Group = group;
Count = count;
Color = color;
}
}
在我的代码中,我有一个 DataCollector 的 ObservableCollection。
public ObservableCollection<DataCollector> dataGrid { get; set; }
我收集我的数据并很好地使用它,直到我去向代码添加更多功能。
我想通过“dataGrid”并列出组并从所有名称中获取总数。
List<DataCollector> dataCollector = new List<DataCollector>();
List<string> _groupNames = new List<string>();
foreach (DataCollector dc in dataGrid)
{
int cnt = 0, index = 0;
bool groupFound = false;
if (dataCollector.Count == 0)
{
_groupNames.Add(dc.Group);
dataCollector.Add(dc));
}
else
{
foreach (string groupNames in _groupNames)
{
if (groupNames == dc.Group)
{
index = cnt;
nameFound = true;
}
cnt++;
}
if (nameFound)
{
// When I do this my dataGrid.Count increments, too
dataCollector[index].Count += dc.Count;
}
else
{
_groupNames.Add(dc.Group);
dataCollector.Add(dc);
}
}
}
为了解决这个问题,我改变了
dataCollector.Add(dc);
到
dataCollector.Add(new DataCollector(dc.Name, dc.Group, dc.Count, dc.Color));
为什么我必须这样做?将“dc”添加到“dataCollector”是否会创建指向“dataGrid”的链接?如果是这样,那就没有意义了。