Adding items to a List in C#

I am learning how to use Lists as part of C# generic collections. The code listed below is a simple class called Person with FirstName, LastName and Age as attributes for each employee in the Person Class.
After creating the class comes the List which is of type Person with an object called employees. Then I add two employees to the list.
All goes well except when I run the code I don't get the expected particulars of the second employee, instead I get "ConsoleApplication2.Person". I want to know what I am doing wrong.   Thanks.

namespace ConsoleApplication2
{
    class Person
    {

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }


        public Person(string FirstName, string LastName, int Age)
        {
            this.FirstName = FirstName;
            this.LastName = LastName;
            this.Age = Age;
        }
   
        static void Main(string[] args)
        {
            List<Person> employees = new List<Person>();
            employees.Add(new Person("Tom", "Drake", 50));
           employees.Add(new Person("Kelly", "Drake", 40));
            Console.WriteLine(employees[1]);
            Console.ReadKey();



        }
    }
}
Adam TraskAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
Kyle AbrahamsConnect With a Mentor Senior .Net DeveloperCommented:
add this to your class:


public string Output()
{
 return "Person: " + FirstName + " " + LastName + " " + Age;
}

Open in new window


then in your code:

  static void Main(string[] args)
        {
            List<Person> employees = new List<Person>();
            employees.Add(new Person("Tom", "Drake", 50));
           employees.Add(new Person("Kelly", "Drake", 40));
           Console.WriteLine(employees[1].Output());  //can also access any property, eg: employees[1].FirstName
           Console.ReadKey();
           

       }

Open in new window


Note that the main shouldn't be part of the person class.  You have a class which is responsible for itself.  Then you have a driver program which uses the class.
0
 
käµfm³d 👽Connect With a Mentor Commented:
By default, Console.WriteLine will call the ToString method of an object that you pass to it. By default, objects--except for strings and ints (and such)--will print their type names. If you want to see the particulars, then you either have to dump out each property individually, or your have to override the default ToString implementation to dump out the values.
0
 
p_davisCommented:
you are printing the object not the strings that make up the object.
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Adam TraskAuthor Commented:
Thanks to both of you.  But I still don't know how to display the information on the console. Here is what I did:

class Person
    {

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }


        public Person(string FirstName, string LastName, int Age)
        {
            this.FirstName = FirstName;
            this.LastName = LastName;
            this.Age = Age;
        }
   
        static void Main(string[] args)
        {
            List<Person> employees = new List<Person>();
            employees.Add(new Person("Tom", "Drake", 50));
           employees.Add(new Person("Kelly", "Drake", 40));
          //  Console.WriteLine(employees[1]);
          //  Console.ReadKey();

       }
        public override string ToString()
        {
            return "Person: " + FirstName + " " + LastName + " " + Age;
           
        }
    }
}
0
 
Adam TraskAuthor Commented:
Thank you Kyle
0
 
Adam TraskAuthor Commented:
Thanks.  Things are getting a bit more clearer
0
All Courses

From novice to tech pro — start learning today.