gpt4 book ai didi

C# 指向对象的指针

转载 作者:行者123 更新时间:2023-11-30 21:05:36 26 4
gpt4 key购买 nike

这里有一个小故事。我有一个公共(public)属性(property)(typeof(ObservableCollection<Area>))我将 TreeView 绑定(bind)到。我想更新树,但我不想重绘整个事物并丢失所选项目、节点的折叠/展开状态以及我忘记实现的任何其他内容。所以我想我需要更新集合中的区域。我注意到使用 FirstOrDefault 语句并将其设置为等于某物实际上并没有改变可观察集合中的区域:

var areas = GetAreaInfo(); //Entity Framework query returns ObservableCollection<Area>
foreach (Area a in areas)
{
var αrea = Areas.FirstOrDefault(α => α.Id == a.Id);
if (αrea != null)
αrea = a; //αrea changes, but Area[0] which is supposed to be αrea doesn't
}

我能否获取对象的引用或指针,这样我就不必遍历可观察集合并使用索引?

最佳答案

您实际上并没有在做您认为正在做的事情。在您的情况下,区域只是一个变量。当您设置 area = a 时,您正在重置“area”变量指向的位置,根本不会更改可观察集合。

最好的办法是更新 area 的所有属性以匹配 a 的属性。编写 Clone 或 Copy 方法以将属性从对象的一个​​实例复制到另一个实例通常很容易。您的另一个选择是从集合中删除区域并添加一个,但这可能会导致一些排序问题。

编辑:关于您的实际问题,是的,可能在 C# 中获取指针,但这是个坏主意。这将需要更多的工作来编写,需要您将代码标记为不安全,并且以后将更难维护。

关于C# 指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11613490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com