类问题求助:类未包含接受1个参数的构造函数
储蓄账户类调试方案
你的核心问题是构造函数定义错误:C#要求构造函数必须和类名完全一致(大小写敏感),且不能有返回值。你写的public double Savings(double beginningBalance)是普通方法而非构造函数,所以创建实例时(比如var saver1 = new savings(2000);)会提示找不到对应构造函数。
下面是具体修复步骤和修正后的代码:
关键修复点
- 修正构造函数:删除返回值
double,确保方法名与类名完全匹配(遵循C#命名规范,将类名改为Savings,构造函数同步改为Savings) - 调整余额属性逻辑:原
SavingsBalance的set方法会自动累加利息,不符合业务逻辑(设置初始余额不应直接加利息),改为仅做单纯赋值,利息计算通过专门方法触发 - 公开余额显示方法:原
DisplaySaver为private,外部无法调用,改为public - 统一命名规范:静态属性、方法名遵循PascalCase,提升代码可读性
修正后的完整代码
using System; namespace savingsAcct { internal class Savings { public static double AnnualInterestRate { get; set; } private double _savingsBalance; // 正确的构造函数:无返回值,名称与类名一致 public Savings(double beginningBalance) { _savingsBalance = beginningBalance; } public double SavingsBalance { get { return _savingsBalance; } set { _savingsBalance = value; } } public void CalculateMonthlyInterest() { // 基于当前余额计算月利息并累加 _savingsBalance += _savingsBalance * (AnnualInterestRate / 12); } public static void ModifyInterestRate(double rate) { AnnualInterestRate = rate / 100; } public void DisplaySaver() { Console.WriteLine($"账户总余额:{_savingsBalance.ToString("c")}"); } } }
使用示例
// 设置年利率为4% Savings.ModifyInterestRate(4); // 创建两个储蓄账户实例 var saver1 = new Savings(2000); var saver2 = new Savings(3000); // 计算月利息并更新余额 saver1.CalculateMonthlyInterest(); saver2.CalculateMonthlyInterest(); // 显示余额 saver1.DisplaySaver(); saver2.DisplaySaver();
内容的提问来源于stack exchange,提问作者Bran
相关产品推荐
相关产品推荐

