【发布时间】:2014-12-11 14:51:45
【问题描述】:
我有一个看起来像这样的函数:
private void OnItemChannelsListChanged(object sender, ListChangedEventArgs args)
{
...
int index = args.NewIndex;
this.UpdateLogsOnNewAssignedUnit(ref index, channels);
}
在哪里
private void UpdateLogsNewAssignedUnit(ref int index, List<IChannel> channels)
{
}
我使用了一个名为 Heap Allocations Viewer 插件(ps。我不隶属于它们),它在编辑器上直观地显示堆分配。好吧,在它下面的 ref int index 参数中显示
闭包分配:'index'、'channels'参数和'this'参考
据我了解,传递 int ref 不应创建新副本! 有谁知道为什么会发生这种情况,我可以做些什么来避免它?
在此先感谢
【问题讨论】:
-
如果您要深入到那个级别,我会说使用 ILSpy 来查看创建闭包的位置。我在您的代码中看不到任何明显的关闭。也许它发生在
UpdateLogsNewAssignedUnit方法中?您是否无意中在那里创建了一个闭包?