【发布时间】:2021-11-11 06:52:29
【问题描述】:
我正在编写一段代码,但无法弄清楚为什么它会显示一些(从我的角度来看)奇怪的行为。我明白这是由于我编写代码的方式,但我不明白为什么它没有做我想做的事情。
我有一个事件处理程序:
private void heatFinishedHandler(object sender, List<Kart> e)
{
mainForm.enableControls();
server.karts = e;
}
如果我将e.Clear(); 添加到它,它也会清除server.karts。
参数e来自另一个类:
private List<Kart> kartlist = new List<Kart>();
heatFinished?.Invoke(this, kartlist);
heatFinished 事件和heatFinishedEventHandler 已连接。
我需要做什么才能通过值而不是参考来获取e?或者它是一个值类型,但它指向kartlist?
我希望能够获取e 的值并将其存储在server.karts 中,而无法更改kartlist。
【问题讨论】:
-
server.karts = e.ToList()?请注意,ToList()不会复制卡丁车,只会创建列表的副本。如果不小心可能会导致其他副作用
标签: c# parameter-passing