Member 12675499 Ответов: 2

Как получить данные из arralist в C#?


его не dispalying данные,
его показывающая система.SampleApp3.коллекция

Что я уже пробовал:

namespace SampleApp3
{
    public class BaseEmployee
    {
        public int Id;
        public string Name;
    }

    public class Employee : BaseEmployee
    {
        public string Address;



        public Object Add()
        {
           
            Employee employeeDetail = new Employee();
            Console.Write("Employee Id:");
            employeeDetail.Id = int.Parse(Console.ReadLine());

            Console.Write("Employee Name:");
            employeeDetail.Name = Console.ReadLine();
            Console.Write("Employee Address:");
            employeeDetail.Address = Console.ReadLine();
            return employeeDetail;

        }
     





        static void Main(string[] args)
        {

           ArrayList arraylist = new ArrayList();

         
            Employee employeeDetails = new Employee();

            while (true)
            {
                
                Console.WriteLine("Employee Record Management System\n");
                Console.WriteLine("\n1)Add");
                Console.WriteLine("\n2)Edit");
                Console.WriteLine("\n3)Delete");
                Console.WriteLine("\n4)Dispaly");
                Console.WriteLine("\n5)Exit");
                Console.WriteLine("\n Select opertaion");
                int Option = int.Parse(Console.ReadLine());

                switch (Option)
                {
                    case 1:
                        arraylist.Add(employeeDetails.Add());
                            //arraylist.Add(employeeDetails.Add());
                            break;


                    case 4:
                        foreach(Object obj in arraylist)
                        {
                            
                            Console.Write(obj);
                        }
                       
                        Console.Read();
                       

                        break;



                }

              

            }

2 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, перестаньте возвращать объекты - вместо этого возвращайте фактический класс, это намного полезнее:

public Employee Add()
{
    Employee employeeDetail = new Employee();
    Console.Write("Employee Id:");
    employeeDetail.Id = int.Parse(Console.ReadLine());

    Console.Write("Employee Name:");
    employeeDetail.Name = Console.ReadLine();
    Console.Write("Employee Address:");
    employeeDetail.Address = Console.ReadLine();
    return employeeDetail;
}

Но в "реальном" приложении вы тоже не должны этого делать. Вам не нужен метод "добавить" - вы должны использовать конструктор:
public Employee(int id, string name, string address)
    {
    Console.Write("Employee Id:");
    Id = id;
    Name = name;
    Address address;
    }

Затем выполните консольную работу в основном методе и используйте полученные результаты для создания нового сотрудника:
Console.Write("Employee Id:");
int id = int.Parse(Console.ReadLine());
Console.Write("Employee Name:");
string name = Console.ReadLine();
Console.Write("Employee Address:");
string address = Console.ReadLine();
Employee employeeDetail = new Employee(id, name, address);
arrayList.Add(employeeDetail);
Таким образом, ваш класс сотрудников можно использовать повторно, потому что ему не нужно знать, откуда берется информация.

Затем, когда вы извлекаете объект из своего ArrayList, приведите его к сотруднику:
foreach(Object obj in arraylist)
    {
    Employee emp = obj as Employee;
    Console.Write("{0}: {1}, {2}", emp.Id, emp.Name, emp.Address);
    }

Но...Я бы не стал использовать ArrayList - они очень устарели и были вытеснены универсальными коллекциями очень давно - посмотрите на использование списка "сотрудник" вместо этого.


Member 12675499

как передать значения конструктору в момент создания объекта для класса employee.
пожалуйста, пришлите, как добавить значения в arraylist?

OriginalGriff

"как основные ценности передать конструктору в то время создания объекта класса employee."
В коде, который я тебе показывал.
"пожалуйста, пришлите, как добавить значения в arraylist?"
В коде, который я тебе показывал.

Они даже стоят в рядах, которые находятся прямо рядом друг с другом!

#realJSOP

Его инструктор, вероятно, сказал ему использовать arraylist.

OriginalGriff

Вот почему я не заменил его, а просто добавил внизу.
Либо учитель не знает, что делает, либо ему нравится усложнять ситуацию для класса каждый раз, когда они должны использовать значения...: вздох:

Рейтинг:
0

#realJSOP

Вы пытаетесь написать объект, который не имеет соответствующего переопределения ToString (). Есть несколько способов исправить это.

Исправить ошибку в операторе switch :

case 4:
    foreach(Employee obj in arraylist)
    {
        Console.Write(string.Format("{0} {1} {2}",obj.Id, obj.Name, obj.Address));
    }


Или добавьте метод ToString() в класс Employee и оставьте оператор switch таким, как он у вас уже есть:

public override string ToString()
{
    return string.Format("{0} {1} {2}", this.Id, this.Name, this.Address);
}


Member 12675499

в консоли.метод writeline (), obj.Id его не берет?
как это сделать?

#realJSOP

Поместите блок try/catch вокруг кода и посмотрите, что происходит в отладчике.

OriginalGriff

Он не передает объект сотруднику, поэтому у него нет свойства ID.

#realJSOP

То есть вы хотите сказать, что он не может следовать письменным инструкциям.

OriginalGriff

Судя по его реакции на мое решение, нет...: вздох: