【问题标题】:I can't create an instance of a class c#我无法创建类 c# 的实例
【发布时间】:2016-09-16 21:56:16
【问题描述】:

好的,所以我在这里要做的是创建一个类数组。我的类 TEAMLEADER 派生自一个抽象类 Employee。但是,当我尝试在 Main 中创建 TEAMLEADER 的实例时,我收到一条错误消息,提示找不到 TEAMLEADER。

namespace Lab3
{ 
    public abstract class Employee
    {
        protected string EmployeeName;
        protected int EmployeeNumber; 
        protected double WeeklySalary;

        public Employee (string EmployeeName, int EmployeeNumber, double WeeklySalary)
        {
            this.EmployeeName = EmployeeName;
            this.EmployeeNumber = EmployeeNumber;
            this.WeeklySalary = WeeklySalary;
        }

        public Employee(string EmployeeName)
        {
            assignID(EmployeeNumber);
        }

        public override string ToString()
        {
            return EmployeeName + " " + EmployeeNumber + " " + WeeklySalary;
        }

        protected virtual double CalcSalary()
        {
            return CalcSalary();
        }//"Virtual" is a keyword that says, "This can be overriden in the derived class."

        private static int assignID(int EmployeeNumber)
        {
            EmployeeNumber.ToString();
            EmployeeNumber++;
            return EmployeeNumber;
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee[] workerarray = new Employee[4];
            workerarray[0] = new TeamLeader("Rachel", 18, 1000000.00, 52000000.00, true);
        }
    }
}

在一个单独的类/选项卡中是 TEAMLEADER 类。

public class TeamLeader:Employee
{

    protected double AnnualSalary;
    protected bool WeeklyGoal;

    public override void CalcSalary()
    {
        if (WeeklyGoal == true)
        { CalcSalary = (AnnualSalary / 52) * 1.10; }

        else (CalcSalary = AnnualSalary / 52);
    }

    public TeamLeader(string EmployeeName, int EmployeeNumber, double WeeklySalary, double AnnualSalary, bool WeeklyGoal):base(EmployeeName, EmployeeNumber, WeeklySalary)
    {
        this.WeeklyGoal = WeeklyGoal;
        this.AnnualSalary = AnnualSalary;
    }
}

问题出在我的主要方法中。我不明白为什么我不能创建 TeamLeader 的实例。它不是一个抽象类,所以 Main 不应该能够识别它并创建一个实例吗?

【问题讨论】:

  • 是否在同一个命名空间中?您似乎缺少那部分代码。
  • 它在同一个命名空间(或者应该是)但在不同的选项卡中。
  • 你能发布整个团队领导文件吗?如果您使用的是 Visual Studio,请将光标放在 TeamLeader 中的 r 之后(在 Main 中)并点击 control-。 (control-(句号)。Viusal studio应该给你一个建议。
  • 除非有命名空间代码,否则不存在。
  • TeamLeader 是否与您的主要功能在同一个程序集中?

标签: c# inheritance polymorphism abstract-class


【解决方案1】:

您是否尝试过添加:

using Lab3;

到你的 Main 类文件的顶部?

【讨论】:

  • 是的,将其添加到 MAIN 类的顶部也不起作用。
【解决方案2】:

试试这个

确保将namespace Lab3 添加到 TeamLeader 类所在文件的顶部。然后将这行代码using Lab3; 添加到主文件的顶部。

如果这不适合你试试这个。

您可能已将 TeamLeader 类添加到不同的程序集中 解决这个问题。

在你的 main 所在的程序集中点击 References

点击添加参考

点击项目 > 解决方案并添加您的程序集

请让我知道它是否有效

【讨论】:

    【解决方案3】:

    你的类中有公共默认构造函数吗?

    public Employ()
    {
    }
    

    当命令时

    Employee[] workerarray = new Employee[4];
    

    执行时,需要创建 4 个 Employ 类型的新对象,但由于没有无参数构造函数,无法创建这些对象。

    【讨论】:

    • 当你创建一个数组时,它不会创建新的类实例,它只会在内存中保留空间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2015-03-31
    • 2021-11-28
    • 2013-12-03
    • 2017-12-13
    相关资源
    最近更新 更多