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

C#中BankAccount类的Cents属性Setter完全失效问题求助

问题分析与解决方案

你遇到的问题核心很清晰:你在构造函数里直接给私有字段cents赋值,完全绕过了Cents属性的setter,所以setter里的代码根本没被执行到。

为什么setter没被触发?

看你的构造函数这段代码:

public BankAccount(uint dollars,uint cents) {
    this.Dollars = dollars;
    this.cents = cents; // 这里直接操作私有字段,和Cents属性无关
}

这里你直接赋值给了类内部的私有字段cents,而不是通过公开的Cents属性。不管你在Cents的setter里写了什么逻辑,都不会被触发——因为你从来没调用过这个setter。

修复方案

把构造函数里的赋值语句改成操作Cents属性,而不是私有字段:

class BankAccount {
    public BankAccount(uint dollars,uint cents) {
        this.Dollars = dollars;
        this.Cents = cents; // 现在会调用Cents属性的setter
    }
    public uint Dollars { get; private set;}
    private uint cents;
    public uint Cents {
        get { return cents; }
        private set {
            cents = 500; // 现在这个赋值会生效
            Console.WriteLine("It's been written in Cents setter"); // 这句也会被打印
        }
    }
}

运行修改后的代码,你会看到控制台输出It's been written in Cents setter,并且a.Cents的值会变成500——完全符合你在setter里定义的逻辑。

补充说明:你的Cents setter是private修饰的,只有类内部代码可以调用,构造函数属于类内部逻辑,所以这么写是完全合法的。

内容的提问来源于stack exchange,提问作者Paweł Michoń

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:13:12