You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AgeCalc属性输出0问题咨询:原代码失效原因解析

原代码失效原因解析

原代码里AgeCalc返回0的核心问题是:你从来没触发过AgeCalc的set方法,导致存储年龄的personAge字段一直是int类型的默认值0。

原代码的逻辑问题

在你的HeartRateData类中,AgeCalc的set块负责计算personAge = CurrentYear - BirthYear,但这个代码块只有在你主动给AgeCalc赋值时才会运行(比如写person1.AgeCalc = 1;这种语句)。而你的主方法里,只设置了BirthYear和CurrentYear,然后直接读取AgeCalc——这只会触发get方法,返回的是从未被更新过的personAge初始值0。

修改后代码正常的原因

你把计算逻辑移到了get方法里,每次读取AgeCalc时,都会用当前的CurrentYear和BirthYear实时计算年龄,不需要依赖外部触发赋值操作,所以能得到正确结果。

原代码的可选修复方式(保留set的场景)

如果一定要保留原结构,需要在设置完年份后主动触发set,比如:

person1.CurrentYear = cYear;
// 随便赋个值触发set块,执行年龄计算
person1.AgeCalc = 0;
Console.WriteLine($"Your Age is {person1.AgeCalc}");

但这种写法不符合C#属性的设计规范,更推荐的是直接用只读属性简化实现:

public int AgeCalc => CurrentYear - BirthYear;

内容的提问来源于stack exchange,提问作者Rembert Micheal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:25:12