C# 向BindingList添加重复的值
当我向BindingList添加信息时,它会被复制。。。我不明白怎么 我在这节课上列出了:C# 向BindingList添加重复的值,c#,add,bindinglist,C#,Add,Bindinglist,当我向BindingList添加信息时,它会被复制。。。我不明白怎么 我在这节课上列出了: public VideoRepository() { videos = new BindingList<Video>(); videosFiltered = new BindingList<Video>(); } public BindingList<Video> videos { get; set; } public BindingList<V
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);
}
公共视频存储库()
{
视频=新建绑定列表();
videosFiltered=新绑定列表();
}
公共绑定列表视频{get;set;}
公共绑定列表视频过滤{get;set;}
公共视频(视频)
{
Console.WriteLine(“大小1”+视频数);
视频。添加(视频);
视频过滤。添加(视频);
Console.WriteLine(“大小2”+视频数);
}
当我调用方法addVideo
时,第一次打印显示Size 1 0
,第二次打印显示Size 2 2
。即使在使用调试程序时
有什么问题?我喝醉了吗?我注意到你的
视频和视频过滤的都有公共设置器。获得所述行为的唯一方法是,如果某些外部代码(此处未显示)将它们设置为一个且相同的BindingList
实例
你最好把公共设置器移除
或者,按如下方式修改代码
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);
}
第一张打印在add之前,第二张打印在add之后。是的,我有,但我戴着眼镜。我的列表是空的,所以第一次打印应该打印0,因为它是,然后我添加了一个对象到我的列表视频,所以我应该有1个对象,但它打印2!之前的打印应该打印0,列表为空,第二次打印应该打印1,我只向列表添加一个对象。。。但我得到了2??是的,你是对的,当我看到你的代码时,我注意到了你的if条件,然后我想起了另一种方法,我想把对象从一个列表复制到另一个列表,我使用了videosFiltered=videos,但没有注释。。。那是我的问题。谢谢你的帮助。