One of the most widely used data type in C# is array. Array could be of 3 kinds: single-dimensional, multiple-dimensional, and jagged. What are they and how do we initialise them? This blog gives a concise introduction.
Single-dimensional array
default init
int[] arr_num = new int[10]; // by default, numerical values are filled with 0 string[] arr_str = new string[10]; // by default, reference type values are filled with null // be careful, here, it is NOT empty string but NULL
literal init
int[] arr_num = new int[] {1, 2, 3}; // or int[] arr_num1 = {1,2,3}; // the compiler could infer type // or int[] arr_num2 = new int[3] {1, 2, 3}; // but why would anyone want such verbose declaration?
Multiple-dimensional array
default init
// 2-d array int[,] arr_num = new int[10,2]; // by default, numerical values are filled with 0 string[,] arr_str = new string[10,2]; // by default, reference type values are filled with null // be careful, here, it is NOT empty string but NULL // 3-d array int[,,] arr_num_3d = new int[3,3,4]; // the logic for declaring a n-d array is similar
literal init
// 2x2 2-d array int[,] arr_num = new int[,] {{1,2}, {3,4}}; // or int[,] arr_num1 = {{1,2}, {3,4}}; // the compiler could infer type // or int[,] arr_num2 = new int[2,2] {{1,2}, {3,4}}; ; // but why would anyone want such verbose declaration?
Jagged array
A jagged array is an array whose elements are array. However, its element could be of different size.
default init
// int[][] jagged_arr = new int[2][]; // by default, numerical values are filled with 0 jagged_arr[0] = new int[2]; jagged_arr[1] = new int[3]; // could also literal init // could of different size
literal init
int[][] jaggedArray2 = new int[][] { new int[] { 1, 3, 5, 7, 9 }, new int[] { 0, 2, 4, 6 }, new int[] { 11, 22 } }; // jagged array whose elements are multiple-dim arrays int[][,] jaggedArray4 = new int[3][,] { new int[,] { {1,3}, {5,7} }, new int[,] { {0,2}, {4,6}, {8,10} }, new int[,] { {11,22}, {99,88}, {0,9} } };
Final remark
- about default value behaviour: for numerical value types (int, decimal, double), filled with 0; for reference value types (string, array), filled with null
- To create an m x n jagged array, the following code may deem useful:
int m=4, n=8; int[][] dp = new int[m][]; for (int i=0; i<m; i++) dp[i] = new int[n];
Top comments (0)