2015-11-01 47 views
1

当我到的BindingList添加信息,它就会被复制......我不明白怎么...添加重复值的的BindingList

我有这个类与清单:

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。即使使用debuger ...

问题是什么?我喝醉了吗?

+0

第一个打印是添加之前,第二个是后添加 – Steve

+0

有,我有,但我穿我的眼镜。我的列表是空的,所以第一个打印应该打印0,因为它是,然后我添加一个对象到我的列表视频,所以我应该有1个对象,但它打印2! – lulas

+0

之前的打印应该打印0,列表为空,第二个打印为打印1,我只在列表视频中添加一个对象...但是我得到2? – lulas

回答

1

我注意到你的videosvideosFiltered都有公开的制定者。你可以得到所描述的行为的唯一方法是如果一些外部代码(这里没有显示)将它们设置为一个并且相同的实例。

你最好删除公共设置者。

或者,修改代码如下

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); 
} 
+0

是的,你是对的,当我看到你的代码,我注意到你的条件,然后我想起了另一种方法,我想从一个列表复制对象到另一个,我使用videosFiltered = videos,但留下了未注释的...那是我的问题。感谢您的帮助。 – lulas