2016-09-16 7 views
-1

Хорошо, поэтому я пытаюсь создать массив классов. Мой класс TEAMLEADER получен из абстрактного класса Employee. Однако, когда я пытаюсь создать экземпляр TEAMLEADER в Main, я получаю сообщение об ошибке, указывающее, что TEAMLEADER не может быть найден.Я не могу создать экземпляр класса C#

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); 
     } 
    } 
} 

В отдельном классе/tab находится класс 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 не должен распознавать его и создавать экземпляр?

+0

Является ли оно в том же пространстве имен? Кажется, вам не хватает этой части кода. –

+0

Он находится в том же пространстве имен (или он должен быть), но на другой вкладке. –

+0

Можете ли вы опубликовать весь файл teamleader? Если вы используете Visual Studio, поместите курсор сразу после r в TeamLeader (в Main) и нажмите control. (контроль - (период). Студия Viusal должна дать вам предложение. –

ответ

0

Вы пытались добавить:

using Lab3; 

в верхней части главного файла класса?

+0

Да. Я также пробовал "namespace Lab3 {}" –

+0

Подвешивание - я неправильно понял, что вы сказали. –

+0

Да, добавление его в начало класса MAIN также не сработало. –

0

Попробуйте

Убедитесь, что вы добавили namespace Lab3 в верхней части файла, в котором находится класс TeamLeader. Затем добавьте эту строку кода using Lab3; в начало вашего основного файла.

Если это не сработает, попробуйте это.

Maby Вы добавили класс TeamLeader в другую сборку Чтобы решить эту проблему.

Нажмите на Ссылки в сборке, где ваш главный находится

Нажмите на Добавить ссылку

Нажмите на Проекты> Решения и добавить сборку

Пожалуйста, дайте мне знать, если он работал или нет

0

У вас есть стандартный конструктор по умолчанию в вашем классе?

public Employ() 
{ 
} 

Когда команда

Employee[] workerarray = new Employee[4]; 

выполняется, то необходимо создать 4 новые объекты типа Employ, но те, которые не могут быть созданы, потому что не является параметром-менее конструктор.

+0

Это неправда Я пробовал это –

+0

, когда вы создаете массив, он не создавать новые экземпляры классов, он сохраняет только память в памяти –

Смежные вопросы