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

如何在C#类中为属性赋值计算值?以Car类YearCreated为例

实现方案

根据你的需求,有两种常见的实现方式,你可以根据实际场景选择:

方式一:只读计算属性(推荐)

把YearCreated改成只读的计算属性,每次访问时自动计算2023 - Age的值,这样Age变化时,YearCreated会自动同步更新,不需要手动维护:

public class Car
{
    public string Id { get; set; }
    public Producent Producent { get; set; }
    public int Age { get; set; }
    // 只读计算属性,实时计算年份
    public int YearCreated => 2023 - Age; 
    public Engine Engine { get; set; }
}

这种方式简洁高效,不需要额外字段或同步逻辑,完全由计算逻辑保证两个属性的一致性,适合YearCreated不需要手动修改的场景。

方式二:在Age的setter中同步更新YearCreated

如果需要YearCreated支持手动修改,但希望设置Age时自动同步更新它,可以给Age添加私有字段,在setter里更新YearCreated:

public class Car
{
    private int _age;
    
    public string Id { get; set; }
    public Producent Producent { get; set; }
    public int Age
    {
        get => _age;
        set
        {
            _age = value;
            // 设置Age时自动更新YearCreated
            YearCreated = 2023 - _age;
        }
    }
    public int YearCreated { get; set; } 
    public Engine Engine { get; set; }
}

这种场景下,你既可以通过设置Age让YearCreated自动计算,也可以手动给YearCreated赋值覆盖计算结果。

额外说明

如果需要的不是固定的2023,而是当前年份,可以把2023替换为DateTime.Now.Year,这样年份会自动跟随系统时间变化:

public int YearCreated => DateTime.Now.Year - Age;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:11:31