在第三个类构造函数中累加另外两个类的decimal属性值失败求助
问题分析与修复方案
看了你的代码,这里有几个明显的C#语法和逻辑问题,导致IDE无法正常编译,我一步步给你拆解:
1. 大小写错误:Public → public
C#是大小写敏感的语言,类的构造函数访问修饰符必须是小写的public,大写的Public属于语法错误,会直接触发编译报错。
2. 属性未绑定私有字段
你的Class1和Class2里的Value属性只是定义了空的getter和setter,没有和私有字段value关联起来。这意味着你通过构造函数传入的值根本没有被存储,后续访问class1.Value拿到的永远是decimal的默认值0,自然无法得到正确的累加结果。
3. Class3未保存传入的对象引用(规范问题)
你的Class3里定义了public Class1 class1;和public Class2 class2;字段,但构造函数里没有把传入的对象赋值给它们,这些字段会保持null,如果后续需要使用这两个对象的话会触发空引用异常。
修正后的完整代码
class Class1{ // 用自动属性简化写法,省去手动定义私有字段 public decimal Value { get; set; } public Class1(decimal value){ Value = value; } } class Class2{ public decimal Value { get; set; } public Class2(decimal value){ Value = value; } } class Class3{ // 用只读属性封装传入的对象,避免外部随意修改 public Class1 Class1Instance { get; } public Class2 Class2Instance { get; } // 把累加结果单独作为一个属性暴露,更清晰 public decimal TotalValue { get; } public Class3(Class1 class1, Class2 class2){ // 保存传入的对象引用 Class1Instance = class1; Class2Instance = class2; // 正确累加两个对象的Value属性 TotalValue = class1.Value + class2.Value; } }
额外说明
如果你坚持要用私有字段+手动属性的写法,Class1的属性可以改成这样(适合需要在get/set里加额外逻辑的场景):
private decimal _value; public decimal Value { get { return _value; } set { _value = value; } }
不过自动属性是C#里更推荐的简洁写法,除非有特殊需求。
内容的提问来源于stack exchange,提问作者user10555044
相关产品推荐
相关产品推荐

