## Tuesday, February 17, 2009

### The different between Count, Length, and Index

[This was originally posted at http://timstall.dotnetdevelopersjournal.com/the_different_between_count_length_and_index.htm]

When dealing with arrays and collections (like List), there are three integer "things" that can mess people up: Count, Length, and Index.

• 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>();