如何通过类方法修改类实例属性值并返回对应类型的结果
问题诊断与修复方案
错误原因
- 你定义的
Add方法返回值类型为Time类,但实际返回的是Hour + hrs的int类型计算结果,两种类型不匹配,因此报类型转换错误。 - 现有代码逻辑未满足需求:你需要返回包含累加后小时数的Time对象,而不是单纯的int数值,也没有复用原对象的Min、Sec属性。
修复代码
方案1:返回全新Time实例(不修改原对象,更安全)
该实现不会改变原有time1的属性值,会生成新的Time对象返回,适合需要保留原始时间的场景:
public Time Add(int hrs) { int newHour = Hour + hrs; // 可选添加24小时制溢出处理:newHour = newHour % 24; 涉及负数小时数场景可再做调整 return new Time(newHour, Min, Sec); }
调用示例:
Time time2 = time1.Add(8); // time1的Hour仍为12,time2的Hour为20
方案2:修改当前实例后返回(会改变原对象属性)
如果你的需求是直接修改原time1的小时数,直接修改当前对象的Hour属性后返回自身即可:
public Time Add(int hrs) { Hour += hrs; // 可选添加24小时制溢出处理:Hour %= 24; return this; }
调用示例:
time1.Add(8); // 执行后time1的Hour变为20
内容的提问来源于stack exchange,提问作者Moon
相关产品推荐
相关产品推荐

