2016-05-13 2 views
-6

Имейте в виду, что это мой первый вопрос здесь, и я также новичок в C#.Как создать этот код в Visual Studio?

Я скопировал код с this YouTube video в Visual Studio, но он не будет создан. Я не могу добавлять элементы в empList.

Update

Я очень ценю вашу помощь, но он все еще не строят, несмотря на ваши предложения (например, у меня есть пространство имен с помощью System.Collections.Generic). Я даже полностью скопировал код Риона, и он все равно не будет построен. В этих строках имеются ошибки:

) ожидаемый ","; Ожидается

и

недопустимый термин выражение «»

List<Employee> empList = new List<Employee>(); 
empList.Add(new Employee() {ID = 101, Name = "Mary", Salary = 5000, Experience = 5}); 
empList.Add(new Employee() {ID = 102, Name = "Maria", Salary = 6000, Experience = 2}); 
empList.Add(new Employee() {ID = 106, Name = "Mike", Salary = 4000, Experience = 4}); 
empList.Add(new Employee() {ID = 104, Name = "John", Salary = 5000, Experience = 7}); 
Employee.PromoteEmployee(empList); 

Это не выглядит так же, как код в видео, потому что я изменил его немного, но это все еще не будет строить.

class Program 
{ 
    public static void Main(string[] args) 
    { 
     List<Employee> empList = new List<Employee>(); 


     empList.Add(new Employee() {ID = 101, Name = "Mary", Salary = 5000, Experience = 5}); 
     empList.Add(new Employee() {ID = 102, Name = "Maria", Salary = 6000, Experience = 2}); 
     empList.Add(new Employee() {ID = 106, Name = "Mike", Salary = 4000, Experience = 4}); 
     empList.Add(new Employee() {ID = 104, Name = "John", Salary = 5000, Experience = 7}); 

     Employee.PromoteEmployee(empList); 
    } 


} 

class Employee 
{ 
    public int ID; 
    public string Name; 
    public int Salary; 
    public int Experience; 

    public static void PromoteEmployee(List<Employee> employeeList) 
    { 
     foreach (Employee employee in employeeList) 
     { 
      if(employee.Experience >=5) 
      { 
       Console.WriteLine(employee.Name + " promoted"); 
       Console.ReadLine(); 
      } 
     } 
    } 
} 
+6

Если он «не будет строить», то предположительно вы получите ошибку компилятора. Вы должны стремиться размещать как можно больше информации о своей проблеме. Итак, что это за сообщение об ошибке? –

+5

Я не вижу ничего плохого в этом коде. Как уже было сказано, объясните, в чем ваша проблема и какое сообщение об ошибке получено. – Steve

+0

Являются ли эти классы в одном пространстве имен? – Master117

ответ

1

Добавление элементов

Если вам нужно добавить какие-либо элементы в список, вы могли бы рассмотреть, просто добавив еще одну строку:

empList.Add(new Employee() {ID = 42, Name = "Foo", Salary = 42, Experience = 0}); 

Если вы хотите, чтобы справиться с этим программным путем через консоль, вы можете подумать о запросе каждого из значений, которые вам нужны для пользователя, для создания объекта Employee и сохранения его в empList:

// Building a new employee 
var newEmployee = new Employee(); 
// Request the ID 
Console.WriteLine("What is the Employee's ID?"); 
newEmployee.ID = Int32.Parse(Console.ReadLine()); 
// Request the Name 
Console.WriteLine("What is the Employee's Name?"); 
newEmployee.Name = Console.ReadLine(); 
// Continue for other properties here 

// After you have what you need, simply add it to the list 
empList.Add(newEmployee); 

обнаруживая ссылки

Поскольку вы явно не размещать какие-либо эталонные пространств имен можно использовать, убедитесь, что у вас есть следующие используя заявление для того, чтобы правильно использовать List коллекции:

using System.Collections.Generic; 

Возможно Ожидание ввода

Assum вы хотите вывести каждого из соответствующих сотрудников, тогда он должен work as expected, однако Console.ReadLine() в вашем коде, скорее всего, ждет ввода пользователя, а не заканчивает итерирование через ваши объекты.

Попробуйте разместить его за пределами вашей foreach петли в пределах вашего метода Employee.PromoteEmployee:

public static void PromoteEmployee(List<Employee> employeeList) 
{ 
    foreach (Employee employee in employeeList) 
    { 
     if(employee.Experience >=5) 
     { 
      Console.WriteLine(employee.Name + " promoted"); 
     } 
    } 
    Console.ReadLine(); 
} 

Пример

enter image description here

Вы можете see a complete working example here, пример вывода выше, и применимо код ниже:

using System; 
using System.Collections.Generic; 

public class Program 
{ 
    public static void Main() 
    { 
     List<Employee> empList = new List<Employee>(); 
     empList.Add(new Employee() {ID = 101, Name = "Mary", Salary = 5000, Experience = 5}); 
     empList.Add(new Employee() {ID = 102, Name = "Maria", Salary = 6000, Experience = 2}); 
     empList.Add(new Employee() {ID = 106, Name = "Mike", Salary = 4000, Experience = 4}); 
     empList.Add(new Employee() {ID = 104, Name = "John", Salary = 5000, Experience = 7}); 

     Employee.PromoteEmployee(empList); 
    } 
} 

class Employee 
{ 
    public int ID; 
    public string Name; 
    public int Salary; 
    public int Experience; 

    public static void PromoteEmployee(List<Employee> employeeList) 
    { 
     foreach (Employee employee in employeeList) 
     { 
      if(employee.Experience >=5) 
      { 
       Console.WriteLine(employee.Name + " promoted"); 

      } 
     } 
     Console.ReadLine(); 
    } 
} 
+0

Может быть, OP хочет только нажать кнопку, прежде чем увидеть следующего сотрудника в списке? Это просто удар в темноте. ОП конкретно упоминал «ошибки сборки», поэтому, если они не понимают смысла этого, я не уверен, что это должен быть ответ. – user1666620

+0

Я согласен, также может быть просто, что им не хватает необходимого 'using System.Collections.Generic;' для доступа к спискам. Я также включил информацию о том, как они могут добавить пользователя в список. –