gpt4 book ai didi

c# - 设置 ListView.ItemsSource 时的 StackOverflow

转载 作者:行者123 更新时间:2023-11-30 13:34:04 24 4
gpt4 key购买 nike

所以我有一个简单的结构 Point,它有两个 double 值 XY。我计算了一个包含大约三百个的数组,并将该数组设置为 WPF 中 ListView 的 ItemsSource。该调用最终会抛出 StackOverflowException

De 调试器在我的结构中的 Equals 方法的开头中断,我是这样实现的(如果重要的话):

public override bool Equals(object obj)
{
if (obj is Point)
return Equals(obj);

return false;
}
public bool Equals(Point other) // Implement IEquatable<T>
{
return this.x == other.x && this.y == other.y;
}

如果我将其更改为:

public override bool Equals(object obj)
{
return false;
}

没有任何反应,数字得到显示。我真的不知道我在这里做错了什么,所以我不知道如何解决这个问题。有什么指点吗?

最佳答案

程序正在尝试再次调用 Equals(object obj) 因为您将 obj 作为 object 传递,即使它是一个 。所以本质上,过载是一次又一次地调用自己。

当你在内部调用中传递它时,你必须将 obj 转换为 Point,所以它会调用 Equals(Point other) 方法代替:

public override bool Equals(object obj)
{
if (obj is Point)
return Equals((Point) obj);

return false;
}

关于c# - 设置 ListView.ItemsSource 时的 StackOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352984/

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