**Heads up!** To view this whole video, sign in with your Courses account or enroll in your free 7-day trial.
Sign In
Enroll

Start a free Courses trial

to watch this video

Multidimensional arrays are a special type of array. They're different than jagged arrays and they have a special syntax in C#. Let's explore how they're different.

In the previous video we saw one way to create a spreadsheet by creating 0:00 nested arrays. 0:05 This is called a jagged array and 0:06 it works great when we want the inner arrays to be different lengths. 0:08 This is a common scenario for 0:13 example think about a school's class rules the outer rows. 0:15 The outer array contains the classrooms, and 0:18 the inner arrays contain the students in each classroom. 0:21 Each classroom may have a different number of students. 0:25 However, sometimes we don't need nor 0:29 want the sizes of the inner arrays to be different lengths. 0:32 These are true two dimensional arrays. 0:35 In the spreadsheet example this would mean 0:38 that every row in a spreadsheet has exactly the same number of cells. 0:41 We create a two dimensional array similar to the way a jagged array is created. 0:45 So I'll say cell open square bracket comma closing square bracket sheet 0:51 equals new cell and here we can put the dimensions of our two dimensional array. 0:57 So I'll say it has 100 rows and 10 columns. 1:03 Instead of two sets of angle brackets, 1:08 instead we have a single set of angle brackets with a comma in it. 1:11 On the right side we put both dimensions of the array at the same time. 1:15 This is more than syntactic sugar. 1:20 This is actually a single array of 1,000 items. 1:23 They're organized into dimensions, one for rows and the second for columns. 1:27 If we get the value of the arrays length property we see that it has 1,000 items. 1:32 Remember that the length of the jagged array of arrays was 100. 1:40 Instead this is giving us the total number of items in the array. 1:43 The C# Repl and Mono doesn't know how to print out a multi dimensional array like 1:49 this, but we can see where individual items of the array are alike so 1:53 just say sheet first index and then the second index. 1:58 And here we see that the element at index 0,0 is nil. 2:04 Just like with jagged arrays, 2:08 the elements are initialized to their types default value. 2:10 In the case of the cell class this is nil. 2:14 We still need to assign objects to each index of the array. 2:17 Again we'll need nested loops for this. 2:21 So I'll say for int rowIndex 2:24 starting at 0 while row index is less than sheet. 2:29 Now here instead of saying length we're going to use the GetLength method and 2:39 here we'll pass the dimension of the array that we'd like to get the length for. 2:45 So I'll enter in zero to get the first dimension. 2:51 And now I'll just say rowIndex++. 2:55 Now to loop through all the columns, 2:59 I'll say four int colIndex starting 3:05 at 0 colIndex less than sheet.GetLength and 3:10 you'll pass in 1 to get the length 3:17 of the second dimension and then colIndex ++. 3:22 Now here we'll say sheet rowIndex, colIndex and 3:30 set each item in the array equal to a new Cell. 3:36 Now all of the indexes in the array have been set to an instance of cell. 3:46 We can check it out by just saying sheet and let's get the item index 2, 3. 3:51 Unlike with jagged arrays, we can't use nested for 3:57 each loops to print out the entire spreadsheet. 4:00 For each loop work with jagged arrays because they're arrays of other arrays. 4:03 A multi dimensional array is actually just 4:08 one large array that's subdivided into equal sized parts. 4:11 There are no inner arrays to loop through. 4:15 So we can't do something like foreach Cell row in sheet. 4:17 This wouldn't work. 4:26 Instead to loop through a multi dimensional array we nest the for 4:29 loops just like we did up here. 4:33 Only instead of setting the values here we can do anything we want, 4:36 such as print them out. 4:40 As you can see jagged arrays are more flexible than multidimensional arrays. 4:42 So you'll find that jagged arrays are more common. 4:46 However, multidimensional arrays are useful in many scenarios. 4:49 One nice thing about multi dimensional arrays is that we can initialize 4:53 both dimensions at once to their default values. 4:57 For example an array of integers like so 5:01 where I can say int[,] matrix = new int and 5:05 then create a matrix with five rows and five columns. 5:09 Now every value in the matrix is initialized to zero. 5:16 Matrices like this are used a lot in computer science, mathematics, 5:20 computer graphics and many other fields. 5:24 In most cases, you'll find that nested arrays like jagged arrays and other types 5:27 of nested collections, are much more common than multi dimensional arrays. 5:31 So far, as we've been creating in our spreadsheet 5:36 we've only seen examples of arrays with rows and columns. 5:39 This is only two dimensions. 5:43 We can create arrays with three or 5:45 more dimensions in the same way we do with two dimensions. 5:47 One scenario for a three dimensional array is a spreadsheet, 5:51 where each cell can contain multiple values. 5:54 in the case of jagged arrays we just have three sets of square brackets like this. 5:58 Again with Jagged arrays we still need to instantiate both of these inner 6:07 dimensions here. 6:11 I'll leave this as an exercise for you. 6:13 Since we have three nested arrays we'll need 6:15 three nested loops to initialize them. 6:18 With multidimensional arrays, we can just add more columns. 6:21 So I can say int and then two commas here to create three dimensions, 6:25 and I'll call this a threeDimMatrix that's equal 6:31 to a new integer array of size five and 5,5. 6:37 Multi dimensional arrays can have a maximum of 32 dimensions. 6:43 Unless you're doing quantum physics of some sort, it's unlikely that you'll ever 6:48 need to deal with a multidimensional array with more than three dimensions though. 6:52 Jagged arrays can have as many nested arrays as we'd like. 6:56 We can even combine jagged and multidimensional arrays like this. 7:00 I'll say int, so this is an integer array 7:03 of a three dimensional multidimensional 7:08 array of a single dimension array and I'll call it yikes. 7:13 So this would be an array of five three-dimensional arrays of 7:25 integer arrays. 7:30 Now we're just talking craziness though. 7:32

You need to sign up for Treehouse in order to download course files.

Sign up