c中的数据绑定行为异常



我有一个关于我的代码的问题:

我有一个播放器列表"private list player=new list();",player是我自己疯狂的类,我还创建了一个Usercontrol,播放器的所有变量都是数据绑定的。

它在我的主表单中运行得很好,但当我改变表单时,我遇到了一个奇怪的问题

我把玩家列表作为另一个表单的参数,这里是代码:

    public Result(List<Player> player, string format)
    {
        InitializeComponent();
        _player = player;
        ExtentionHelpers.Shuffle<Player>(_player);
    }

正如名字所说的洗牌,只是洗牌列表,但它应该洗牌_player,这是我第二种形式的局部变量,我从来没有在这种形式中使用播放器。

但出于某种奇怪的原因,我的主要形式的列表播放器最终也被打乱了,我不希望这样,尤其是当这扰乱了我的数据绑定时。

这里发生了什么??

您的播放器变量是一个引用类型,因此它与您在两种形式中处理的数据相同。如果你想单独操作玩家列表,你需要克隆它。

调用构造函数时,请尝试以下操作:

var frm = new Result(new List<Player>(player), "some format");

创建新列表意味着您可以独立于第一个操作新列表,但如果更改Player类型中的数据,则会影响其他表单中的数据(如果需要,则需要在添加到新列表之前分别克隆每个项目)。

最新更新