将重复值添加到 BindingList

Adding duplicated values to a BindingList

当我向 BindingList 添加信息时,它会重复...我不明白如何...

我有这个 class 和列表:

public VideoRepository()
{
    videos = new BindingList<Video>();
    videosFiltered = new BindingList<Video>();
}

public BindingList<Video> videos { get; set; }
public BindingList<Video> videosFiltered { get; set; }

public void addVideo(Video video)
{
    Console.WriteLine("Size 1 " + videos.Count);
    videos.Add(video);
    videosFiltered.Add(video);
    Console.WriteLine("Size 2 " + videos.Count);
}

当我调用方法 addVideo 时,第一次打印显示 Size 1 0,第二次打印显示 Size 2 2。即使在使用调试器时...

问题是什么?我是不是喝多了?

我注意到您的 videosvideosFiltered 都有 public 个二传手。获得所描述行为的唯一方法是,如果某些外部代码(此处未显示)将它们设置为同一个 BindingList<Video> 实例。

您最好删除 public 设置器。

或者,修改代码如下

public void addVideo(Video video)
{
    Console.WriteLine("Size 1 " + videos.Count);
    videos.Add(video);
    if (videosFiltered != videos)
        videosFiltered.Add(video);
    Console.WriteLine("Size 2 " + videos.Count);
}