# List data structure that represents a list of objects that can be accessed by index. Similar to array, but can dynamically increase/decrease in size using System.Collection.Generic ```C# // error with array String[] food = new string[3]; food[0] = "pizza"; food[1] = "hamburger"; food[2] = "hotdog"; food[3] = "Salad"; foreach(String item in food) { Console.WriteLine(item); } ``` ```C# using System.Collection.Generic List food = new List(); food.Add("fries"); food.Add("pizza"); food.Add("hamburger"); food.Add("hotdog"); food.Add("Salad"); food.Add("fries"); foreach(String item in food) { Console.WriteLine(item); } // accessing an element Console.WriteLine(food[1]); food.Remove("fries"); food.Insert(0,"sushie"); Console.WriteLine(food.Count()); Console.WriteLine(food.IndexOf("hotdog")); Console.WriteLine(food.LastIndexOf("fries")); Console.WriteLine(food.Cotains("pizza")); food.Sort(); food.Reverse(); food.Clear(); String[] foodArray = food.ToArray(); food.Clear(); ``` ## List of object ```C# List player = new List(); Player player1 = new Player ("Chad") Player player2 = new Player ("Steve") Player player3 = new Player ("Karen") players.Add(player1); players.Add(player2); players.Add(player3); // or anonymously players.Add(new Player ("Karen")); players.Add(new Player ("Chad")); players.Add(new Player ("Steve")); foreach(Player player in players) { Console.WriteLine(player); } class Player { public string username; public Player(String username) { this.username=username; } public override string ToString() { return username; } } ```