Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Blazor WASM:List.Remove()调用似乎正在删除对对象的所有引用_C#_Asp.net_Blazor_Blazor Server Side_Blazor Client Side - Fatal编程技术网

C# Blazor WASM:List.Remove()调用似乎正在删除对对象的所有引用

C# Blazor WASM:List.Remove()调用似乎正在删除对对象的所有引用,c#,asp.net,blazor,blazor-server-side,blazor-client-side,C#,Asp.net,Blazor,Blazor Server Side,Blazor Client Side,我有一个应用程序,其中包含这样的对象 Item - Guid Uid - String Title - Item Parent Group : Item - List<Item> Items Interface : Item Field : Group 我发现Payload.Parent.Items.Remove()调用导致对象的实例被释放。如果我将其注释掉,则拖动功能可以正常工作,除非它不会将对象从其原始位置移除。如果我将一个接口元素添加到多个组中,然后删除

我有一个应用程序,其中包含这样的对象

Item
  - Guid Uid
  - String Title
  - Item Parent

Group : Item
  - List<Item> Items

Interface : Item

Field : Group
我发现Payload.Parent.Items.Remove()调用导致对象的实例被释放。如果我将其注释掉,则拖动功能可以正常工作,除非它不会将对象从其原始位置移除。如果我将一个接口元素添加到多个组中,然后删除该接口,则会删除所有引用以及原始对象

我甚至用一个简单的Console.WriteLine在Item基类中实现了IDisposable,这样我就可以看到正在处理的对象。由于它们被列入另一份清单,我预计它们不会被处置。如果另一个对象需要它们,为什么要这样做


这是预期的行为吗?我在这里遗漏了什么吗?

解决方案是在组件实例化中使用@key


解决方案是在组件实例化中使用@key


您好,您是否尝试过将此问题简化为最简单的形式,即使用类似的结构并在控制台应用程序中重现此问题?可能这只是C#的行为方式,与blazor无关。或者,如果您怀疑从列表中删除单个元素会删除所有元素,并且您怀疑这是因为Blazor运行时(您可能也应该在客户端和服务器端之间做出决定),您是否可以使用更简单的代码(例如,单击按钮)重现该问题并且在没有css处理等额外混乱的情况下发布所有内容?作为补充说明,分配
Payload.Parent=this
可能会导致原始
Payload.Parent
不再被引用并符合GC条件吗?不幸的是,没有你所有的代码,我们所能做的就是猜测。我猜出来了。必须在组件中使用@key,以便将它们绑定到对象。谢谢您的帮助。您好,您是否尝试过将此问题简化为最简单的形式,即使用类似的结构并在控制台应用程序中重现此问题?可能这只是C#的行为方式,与blazor无关。或者,如果您怀疑从列表中删除单个元素会删除所有元素,并且您怀疑这是因为Blazor运行时(您可能也应该在客户端和服务器端之间做出决定),您是否可以使用更简单的代码(例如,单击按钮)重现该问题并且在没有css处理等额外混乱的情况下发布所有内容?作为补充说明,分配
Payload.Parent=this
可能会导致原始
Payload.Parent
不再被引用并符合GC条件吗?不幸的是,没有你所有的代码,我们所能做的就是猜测。我猜出来了。必须在组件中使用@key,以便将它们绑定到对象。谢谢你的帮助。