社区首页 >问答首页 >C# -添加到HashSet<T>时的堆栈溢出异常

C# -添加到HashSet<T>时的堆栈溢出异常
EN

Stack Overflow用户
提问于 2017-08-28 05:01:24
回答 1查看 571关注 0票数 1

我有一门课叫小组。

代码语言:javascript
代码运行次数:0
复制
class Team
{
        public Team(string name)
        {
            this.Name = name;
            this.Wins = 0;
            this.Opponents = new HashSet<Team>();
        }

        public string Name { get; set; }
        public int Wins { get; set; }
        public HashSet<Team> Opponents { get; set; }
}

每当我试图在另一队的HashSet中添加一个只有一个对手的现有团队时,我就会得到一个堆栈溢出异常,该团队的guestTeam.Opponents.Add(homeTeam);为零对手。

在这里,hometeam在对手中只有一个对手,而guestTeam.Opponents仍然是空的。

这是个小测试应用程序。Stacktrace的框架图显示了3.

我怎么会被抛出这样的例外呢?

EN

回答 1

Stack Overflow用户

发布于 2017-08-28 06:03:51

我承认我不能再犯错误了。就我个人而言,我可以适当地执行

代码语言:javascript
代码运行次数:0
复制
: IEquatable<Team>

然后:

代码语言:javascript
代码运行次数:0
复制
        public bool Equals(Team other)
    {
        if (ReferenceEquals(null, other)) return false;
        if (ReferenceEquals(this, other)) return true;
        return string.Equals(this.Name, other.Name) && Equals(this.Opponents, other.Opponents);
    }

    public override bool Equals(object obj)
    {
        if (ReferenceEquals(null, obj)) return false;
        if (ReferenceEquals(this, obj)) return true;
        if (obj.GetType() != this.GetType()) return false;
        return Equals((Team)obj);
    }

    public override int GetHashCode()
    {
        unchecked
        {
            return ((this.Name != null ? this.Name.GetHashCode() : 0) * 397) ^ (this.Opponents != null ? this.Opponents.GetHashCode() : 0);
        }
    }

    public static bool operator ==(Team left, Team right)
    {
        return Equals(left, right);
    }

    public static bool operator !=(Team left, Team right)
    {
        return !Equals(left, right);
    }

当然,我不能复制,所以它只是拍摄。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45919718

复制
相关文章
堆栈溢出排查
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/d5000/eas/easDmSync/heapdump.hprof
全栈程序员站长
2022/11/15
1K0
堆栈溢出排查
js堆栈溢出的问题
    js是最令程序员头疼的问题了,不是语法也不是使用头疼,而是调试头疼,虽然有很方便的各种各样的调试工具,但经管这样有时候一个疏忽的小问题,会导致各种各样的奇怪问题的出现,今天笔者的同事就出现了这样的问题,苦闷了整整一天才找到了真正的问题。     出现js堆栈溢出的问题一般的情况有两种:       1.检查自己的js代码看代码中有没有死循环。     2.代码中引用了jQuery-1.4.2.min.js这个js实现一些动态效果或者是辅助,这个版本的jQuery就存在这样的问题(同事就是遇到了这个问
磊哥
2018/04/26
1.8K0
无限递归引发的堆栈溢出
使用gdb进行调试后,定位到错误。当程序执行 return 1 + my_strlen(p++)这条语句时,会出现以下的段错误情况。
lexingsen
2022/02/24
7400
无限递归引发的堆栈溢出
SpringBoot详细打印启动时异常堆栈信息
SpringBoot在项目启动时如果遇到异常并不能友好的打印出具体的堆栈错误信息,我们只能查看到简单的错误消息,以致于并不能及时解决发生的问题,针对这个问题SpringBoot提供了故障分析仪的概念(failure-analyzer),内部根据不同类型的异常提供了一些实现,我们如果想自定义该怎么去做?
恒宇少年
2019/10/08
1.4K0
SpringBoot详细打印启动时异常堆栈信息
定位生产问题时,异常堆栈莫名丢了,何解?
今天分享的这个知识有点冷,相信很多 Java 程序员很少遇到,废话不多说,直接进入排查问题的真实讨论现场。
一猿小讲
2020/08/18
1.3K0
定位生产问题时,异常堆栈莫名丢了,何解?
Java堆栈溢出漏洞分析
什么是堆栈?在思考如何找堆栈溢出漏洞之前,先来弄懂什么是堆栈。Java的数据类型在执行过程中存储在两种不同形式的内存中:栈(stack)和堆(deap),由运行Java虚拟机(JVM)的底层平台维护。
FB客服
2023/02/09
1.6K0
Java堆栈溢出漏洞分析
内部异常堆栈跟踪的结尾_异常堆栈跟踪不可用
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说内部异常堆栈跟踪的结尾_异常堆栈跟踪不可用,希望能够帮助大家进步!!!
Java架构师必看
2022/09/12
2.6K0
堆栈溢出渗透实战-part3
Stack Overflows for Beginners: 1这个靶机还剩下三个flag没有拿到,继续加油。
光明SAMA
2019/07/25
5210
堆栈溢出渗透实战-part1
堆栈溢出技术是渗透技术中的大杀器之一,主要分为堆溢出和栈溢出两种,堆栈溢出的原理是利用软件在开发时没有限制输入数据的长度,导致向内存中写入的数据超出预分配的大小从而越界,越界部分覆盖了程序的返回指针,使程序脱离正常运行流程而执行恶意代码。本次实战主要为栈溢出的入们级练习,联系环境选择了vulnhub上的Stack Overflows for Beginners: 1这个靶机,此靶机共设置了5个flag,每个flag对应了一个用户名,每拿到一个flag就会得到下一个任务对应用户名的密码,完成所有任务可以拿到root权限。
光明SAMA
2019/07/24
1.2K0
堆栈溢出渗透实战-part1
js堆栈溢出错误「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115917.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
1.3K0
堆栈溢出渗透实战-part4
经过前三个flag的练习,目前对edb的使用已经算是轻车熟路了。第4个flag还是用老方法寻找突破口——edb调试。
光明SAMA
2019/07/25
5610
堆栈溢出渗透实战-part2
昨天完成了Stack Overflows for Beginners: 1靶机的第一个目标,还是比较简单的,今天来继续完成第二个目标。
光明SAMA
2019/07/25
5670
学pwn 经典堆栈的缓冲区溢出
$gcc -g -Wall hello.c -o hello $g++ -g -Wall hello.cpp -o hello
用户5878089
2019/07/25
8090
堆栈溢出渗透实战-part5
这是这个靶机环境的最后一个flag了,目标是获取root用户shell,不知道作者会设置些什么样的障碍,一步一步试吧,渗透技术不就是通过不断的尝试来找到各种脑洞大开的方法嘛。
光明SAMA
2019/07/25
4590
iOS 堆栈获取异常分析
最近遇到偶然Bug,ios获取堆栈时偶尔会出现无法识别的栈帧,且对应的地址与macho文件内存的image无法对应,🧐看看到底是什么原因: 首先看现象: 可以看到栈底和中间的栈帧均出现了unkonwn,且栈帧的地址明显与其他长度不一致 查找关键字“unkonwn” 代码中只有一处出现了此关键字🤓,代码定位get(注意区分unknown和unkonwn区别,这里写代码的同学“手误”(腹黑)写了两个方式来区分不同问题) 代码比较简单,大概的意思是,通过读取machO文件,获取所有的代码镜像,然后拿当前的
粲然忧生
2022/08/02
8430
iOS 堆栈获取异常分析
C#堆栈和队列
此前已经采用 Array类和ArrayList类来把数据像列表一样组织在一起. 尽管这两种数据结构可以方便的把数据组织起来进行处理, 但是它们都没有为设计和实现实际问题的解决方案提供真正的抽象。 堆栈(stack)和队列(queue)是两种面向列表(list-oriented)的数据结构, 它们都提供了易于理解的抽象. 堆栈中的数据只能在表的某一端进行添加和删除操作, 反之队列中的数据则在表的一端进行添加操作而在表的另一端进行删除操作. 堆栈被广泛用于从表达式计算到处理方法调用的任何编程语言的实现中. 而队列则用在区分优先次序的操作系统处理以及模拟现实世界的事件方面, 比如银行出纳柜台的队列, 以及建筑物内电梯的操作。 C#为使用这些数据结构提供了两种类:Stack 类和Queue类. 本章将会讨论如何使用这些类并且介绍一些实用的例子。
苏州程序大白
2021/08/13
1.2K0
C#堆栈和队列
OutOfMemoryError异常----Java堆溢出
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下面都叫OOM)异常的肯能,下面就通过一些实例来验证异常发生的场景。 在下面举的例子中,在注释中会设定一些虚拟机的参数,在”VM Args”后边,如果你是用控制台命令来执行的程序,直接把这些参数放到Java命令之后就行,如果用的开发工具,Eclipse IDE,才Debug/Run页签中设置。
令仔很忙
2018/09/14
6250
OutOfMemoryError异常----Java堆溢出
线上异常日志没有堆栈信息
线上大量异常,查看日志,却只有java.lang.NullPointerException,无异常堆栈信息,无法定位异常的位置。
JavaEdge
2022/04/14
8510
线上异常日志没有堆栈信息
择时荟萃(三):择时策略的溢出效应
择时系列第三篇,分享一篇来自HSBC的一篇论文。作者讨论了趋势策略的溢出效应,并基于溢出效应构建交易策略,改进传统的择时策略。
量化小白
2023/03/19
4610
择时荟萃(三):择时策略的溢出效应
JAVA异常堆栈信息被吃掉的原因
首先找出源头解决燃眉之急,加try catch 块,一步一步缩小范围,最终发现是 map的getOrDefault()方法的一个参数是a->null类型的参数获取到null并给了toString方法,所以报空。
MickyInvQ
2020/09/27
2K0
JAVA异常堆栈信息被吃掉的原因

相似问题

堆栈溢出异常(C#)

22

C#堆栈溢出异常

30

*异常:堆栈溢出:堆栈溢出

137

C#捕获堆栈溢出异常

80

捕获堆栈溢出异常C#

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文