When dealing with arrays and collections (like List
- Count - refers to collections. This simply gets the number of items in the collection.
- Length - refers to arrays. to quote: "Gets a 32-bit integer that represents the total number of elements in all the dimensions of the Array." (emphasis added). For a 1-d array, Count and Length seem similar. But for multi-dimensional arrays, the difference becomes apparent. A 3x2 array will have a length of 6. Because an array is allocate up front (as opposed to a collection that can grow or shrink), this conceptually makes sense. Length for an array doesn't change after declaration; Count for a List does (as you add or remove items).
- Index - used by arrays, and some collections (like List
), to indicate a specific item in the array or collection. Whereas Count and Length are 1-based properties, Index is a 0-based indexer.
This code snippet shows these in action:
[TestMethod]
public void TestMethod1()
{
//Length --> total number of items in the array
// acts like "Count" for a 1-d array
string[] astr = new string[]{"a","b","c"};
Assert.AreEqual(3, astr.Length);
// but very different for a 2-d array
string[,] astr2 = new string[2, 3];
Assert.AreEqual(6, astr2.Length); //Length = 2 * 3
//Count --> 1-based
List<string> lstr = new List<string>();
lstr.Add("a");
lstr.Add("b");
Assert.AreEqual(2, lstr.Count);
//Index --> 0-based
Assert.AreEqual("a", astr[0]);
Assert.AreEqual("b", lstr[1]);
}