C# 如何将固定参数传递给基构造函数 什么

C# 如何将固定参数传递给基构造函数 什么,c#,inheritance,C#,Inheritance,我有一个编码练习,其中基类构造函数应该能够使用输入参数定义自定义属性值,但派生类应该将该属性设置为固定值 练习文本的一个片段: “定义一个班级的经理…经理也有每月的奖金,这应该在施工时指定…” 
“定义一个类主管。主管类应该是从经理类派生出来的。主管只是一个每月固定奖金为20000美元的经理……在实施主管类时,要特别注意正确实施构造函数。该类是否除了构造器,你还需要别的吗?“ 问题: 那么,如何在派生类中仅通过在该类中具有构造函数来设置该固定值呢?另外:子类对象的创建者应该根本无法设置该属性(m

我有一个编码练习,其中基类构造函数应该能够使用输入参数定义自定义属性值,但派生类应该将该属性设置为固定值

练习文本的一个片段:

  • “定义一个班级的
    经理
    …经理也有每月的奖金,这应该在施工时指定…”
  • 
“定义一个类
    主管
    主管
    类应该是从
    经理
    类派生出来的。主管只是一个每月固定奖金为20000美元的经理……在实施
    主管
    类时,要特别注意正确实施构造函数。该类是否除了构造器,你还需要别的吗?
  • 问题: 那么,如何在派生类中仅通过在该类中具有构造函数来设置该固定值呢?另外:子类对象的创建者应该根本无法设置该属性(
    monthlyBonus

    企图
    • 我曾考虑在构造函数中生成变量时删除
      Director
      类中的输入参数
      monthlyBonus
      ,但由于基类构造函数首先被调用,我想这是行不通的

    • 我还考虑将输入参数值设置为可选值,但是调用者可以更改此值,因此这也不被接受


    您可以直接在基本构造函数中传递值

    public class Director : Manager
    {
        public Director(string name, int salaryPerMonth, int monthlyHours,)  
               :base(name, salaryPerMonth, monthlyHours, 20000)
        { 
        }
    }
    

    简而言之,您只需要更改构造函数声明:

    public Director(string name, int salaryPerMonth, int monthlyHours)
        : base(name, salaryPerMonth, monthlyHours, 20000) { }
    
    也就是说,当您使用
    base
    调用基本构造函数时,省略
    monthlyBonus
    参数,并硬编码该值(正如您已经做的那样)

    由于这显然是一个课堂练习,我鼓励您提出一些问题,重点是为什么您还没有意识到您可以这样做,这样您就可以更好地理解
    base()
    构造函数调用是如何工作的


    现在,我只想指出,它本质上与任何其他方法调用相同,您可以在任何其他方法调用中使用它做任何事情。参数可以是您想要的任何表达式;它们不需要只是派生构造函数中参数的重复。

    这是我拥有的最快的解决方案otten还在这里。这个问题解决了。如果允许的话,我会在9分钟内将这个问题标记为解决。我实际上尝试了类似的方法,将
    int monthlyBonus=20000
    ,而不是仅仅
    20000
    。谢谢。回答得很好。谢谢。我喜欢你对它工作原理的深入解释,我认为它是可行的st类似于在没有任何继承的情况下,通常创建“普通”类的新对象。
    public Director(string name, int salaryPerMonth, int monthlyHours)
        : base(name, salaryPerMonth, monthlyHours, 20000) { }