C# 我能';t创建类c的实例#

C# 我能';t创建类c的实例#,c#,inheritance,polymorphism,abstract-class,C#,Inheritance,Polymorphism,Abstract Class,好的,我在这里要做的是创建一个类数组。我的类TEAMLEADER来自一个抽象类Employee。但是,当我尝试在Main中创建TEAMLEADER实例时,会收到一条错误消息,说找不到TEAMLEADER namespace Lab3 { public abstract class Employee { protected string EmployeeName; protected int EmployeeNumber; pro

好的,我在这里要做的是创建一个类数组。我的类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不应该识别它并创建实例吗?

您是否尝试添加:

using Lab3;

到主类文件的顶部?

试试这个

确保已将
名称空间Lab3
添加到TeamLeader类所在文件的顶部。然后使用Lab3添加这行代码
到主文件的顶部

如果这对你不起作用,试试这个。

可能是您将TeamLeader类添加到了其他程序集 解决这个问题

单击主部件所在部件中的参照

点击添加参考

单击项目>解决方案并添加部件


请告诉我它是否有效

您的类中是否有公共默认构造函数

public Employ()
{
}
当命令

Employee[] workerarray = new Employee[4];

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

它是否在同一名称空间中?您似乎缺少这部分代码。它位于同一命名空间中(或者应该是),但位于不同的选项卡中。您可以发布整个teamleader文件吗?如果您使用的是VisualStudio,请将光标放在TeamLeader(主)中的r后面,然后单击control-。(control-(period).Viusal studio应该给你一个建议。除非命名空间代码在那里,否则它不是。TeamLeader是否与主函数位于同一程序集中?是的,将其添加到主类的顶部也不起作用。创建数组时,它不会创建类的新实例,它只会在内存中保留空间