Arrays in C#
Arrays in C#
Arrays in C#
What is an Array?
Arrays are a vital part of programming, as they allow the programmer to store more than
one value in a variable, whilst retaining a single reference. If we think of a variable as a
single slot in memory (or a box) that can contain data of a certain type - number,
character, etc. - then an array is the equivalent of a box divided into partitions, each
containing a piece of data. Of course, because the array box is storing more information
than a single variable box, it is much bigger : it needs more memory.
We can use the same name to access the variable, but we need some way to differentiate
between the individual slots. To to this we use an index into the array. For example,
supposing we have an array that is 100 units wide, we might access the hundredth unit
thus:
myArray[99] = 3;
This example also illustrates another feature of most arrays - the index is usually zero
based. In other words, the index to the first item is [0] and the index to the last item is
[number of elements - 1].
In many programming languages, a string is treated as an array of characters. Usually
these arrays are terminated with a null character to indicate the end of the string. This
allows software to process strings without knowing the dimension of the array at design
time. A collection of strings is still possible, however, by using a multidimensional array.
Multi-Dimensional Arrays
A multi-dimensional array is an array of arrays. If we think of a one-dimensional array as
a row of slots in a box, then a two dimensional array is a grid of slots, and a three
dimensional array is a cube of slots. Beyond three dimensions it becomes difficult to
conceptualize, but theoretically at at least, arrays can have any dimension.
If we wish to represent a simple grid (a chessboard for example), we could define the
array as:
myArray[8][8]
The square at row 3, column 5 would be referenced thus:
myArray[3][5] = 1;
We note from this example, that the convention for accessing arrays is often [row,
column]. The reason for this is that if we want to store an array of strings, it makes sense
to access an individual character in a single string as:
myStringArray[3][1]
This references the second character in the fourth string in the array.
Array.IndexOf(), Array.LastIndexOf()
(C#)
<%@Page Language="c#" %>
<script runat="server" Language="c#">
void Page_Load()
{
int intCounter = -1;
string[] AnimalArray = new string[5]
{ "Dog", "Cat", "Elephant", "Lion", "Cat"};
do
{
intCounter = Array.IndexOf(AnimalArray, "Cat", intCounter+1);
MyText.InnerHtml += "AnimalArray[" + intCounter + "]<br/>";
} while (intCounter != Array.LastIndexOf(AnimalArray, "Cat"));
}
</script>
<html>
The string "Cat" occurs in the following elements:
<br/>
<div id="MyText" runat="server" />
</html>
}
</script>
<html>
<asp:label id="MyLabel" runat="server" />
</html>
lblMarx.Text = strMarx[3];
string [] strFriends = new string[5];
strFriends[1] = "Mr. J";
strFriends[4] = "Mr. G";
strFriends[3] = "Mrs. S";
lblFriend.Text = strFriends[4];
}
</script>
<html>
<head>
<title>Array Example</title>
</head>
<body>
<form runat="server">
A Marx Brother:
<asp:Label id="lblMarx" runat="server"></asp:Label><br>
A friend:
<asp:Label id="lblFriend" runat="server"></asp:Label><br>
</form>
</body>
</html>
=
=
=
=
=
=
=
=
=
=
=
=
lblNameFirst.Text = strClient[intIDnumber,0];
lblNameLast.Text = strClient[intIDnumber,1];
lblTel.Text = strClient[intIDnumber,2];
}
}
</script>
<html>
<head>
<title>Array Multidimensional Example</title>
</head>
<body>
<form runat="server">
Enter a client number (from 0 to 3)
<asp:TextBox runat="server" ID="txtID"></asp:TextBox><br>
<asp:Label id="lblNameFirst" runat="server"></asp:Label><br>
<asp:Label id="lblNameLast" runat="server"></asp:Label><br>
<asp:Label id="lblTel" runat="server"></asp:Label><br>
<asp:Button runat="server" Text="Button"></asp:Button>
</form>
</body>
</html>
</script>
<html>
<head>
<title>Array Example</title>
</head>
<body>
<form runat="server">
Please enter your shipper name.
void Page_Load(){
if (Page.IsPostBack){
string[] choice = new string[3];
choice[0] = "1";
choice[1] = "2";
choice[2] = "3";
}
</script>
<html>
<head>
<title>Array Example</title>
</head>
<body>
<form runat="server">
Please enter your shipper name.
(should be "1" or "2" or "3")
<br><asp:TextBox id="txtShipNum" runat="server" width="300px"></asp:TextBox>
<br />
Press button to find the Shipper ID number
<asp:Button id="Button1" runat="server" Text="Submit"></asp:Button>
<br />
<asp:Label id="lblShipper" runat="server"></asp:Label>
</form>
</body>
</html>
Description
Programming C# is a new self-taught series of articles, in which, you may learn C#
programming in a simple step by step tutorial format.
This article concentrates on arrays in .NET and how you can work with arrays using
C# language. Article also covers the Arrays class and its methods, which can be used
to sort, search, get, and set an array items.
Introduction
In C#, an array index starts at zero. That means, first item of an array will be stored
at 0th position. The position of the last item on an array will total number of items 1.
In C#, arrays can be declared as fixed length or dynamic. Fixed length array can
stores a predefined number of items, while size of dynamic arrays increases as you
add new items to the array. You can declare an array of fixed length or dynamic. You
can even change a dynamic array to static after it is defined. For example, the
following like declares a dynamic array of integers.
int [] intArray;
The following code declares an array, which can store 5 items starting from index 0
to 4.
int [] intArray;
intArray = new int[5];
The following code declares an array that can store 100 items starting from index 0
to 99.
int [] intArray;
intArray = new int[100];
Single Dimension Arrays
Arrays can be divided into four categories. These categories are single-dimensional
arrays, multidimensional arrays or rectangular arrays, jagged arrays, and mixed
arrays.
Single-dimensional arrays are the simplest form of arrays. These types of arrays are
used to store number of items of a predefined type. All items in a single dimension
array are stored in a row starting from 0 to the size of array -1.
In C# arrays are objects. That means declaring an array doesn't create an array.
After declaring an array, you need to instantiate an array by using the "new"
operator.
The following code declares a integer array, which can store 3 items. As you can see
from the code, first I declare the array using [] bracket and after that I instantiate
the array by calling new operator.
int [] intArray;
intArray = new int[3]; yahoo Array declarations in C# are pretty simple. You put
array items in curly braces ({}). If an array is not initialized, its items are
automatically initialized to the default initial value for the array type if the array is
not initialized at the time it is declared.
The following code declares and initializes an array of three items of integer type.
int [] intArray;
intArray = new int[3] {0, 1, 2};
The following code declares and initializes an array of 5 string items.
string[] strArray = new string[5] {"Ronnie", "Jack", "Lori", "Max", "Tricky"};
You can even direct assign these values without using the new operator.
If you don't want to specify the size of arrays, just don't define a number when you
call new operator.
For example,
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] names = new string[,] { {"Rosy","Amy"}, {"Peter","Albert"} };
You can also omit the new operator as we did in single dimension arrays. You can
assign these values directly
without using the new operator. For example:
Jagged Arrays
Jagged arrays are often called array of arrays. An element of a jagged array itself is
an array. For example, you can define an array of names of students of a class where
a name itself can be an array of three strings - first name, middle name and last
name. Another example of jagged arrays is an array of integers containing another
array of integers. For example,
int[][] numArray = new int[][] { new int[] {1,3,5}, new int[] {2,4,6,8,10} };
Again, you can specify the size when you call the new operator.
Mixed Arrays
Mixed arrays are a combination of multi-dimension arrays and jagged arrays. Multidimension arrays are also called as rectangular arrays.
Accessing Arrays using foreach Loop
The foreach control statement (loop) of C# is a new to C++ or other developers.
This control statement is used to iterate through the elements of a collection such as
an array. For example, the following code uses foreach loop to read all items of
numArray.
int[] numArray = {1, 3, 5, 7, 9, 11, 13};
foreach (int num in numArray)
{
System.Console.WriteLine(num.ToString());
}
A Simple Example
This sample code listed in Listing 1 shows you how to use arrays. You can access an
array items by using for loop but using foreach loop is easy to use and better.
Listing 1. Using arrays in C#.
using System;
namespace ArraysSamp
{
class Class1
{
static void Main(string[] args)
{
int[] intArray = new int[3];
intArray[0] = 3;
intArray[1] = 6;
intArray[2] = 9;
Console.WriteLine("================");
foreach (int i in intArray)
{
Console.WriteLine(i.ToString() );
}
string[] strArray = new string[5]
{"Ronnie", "Jack", "Lori", "Max", "Tricky"};
Console.WriteLine("================");
foreach( string str in strArray)
{
Console.WriteLine(str);
}
Console.WriteLine("================");
string[,] names = new string[,]
{
{"Rosy","Amy"},
{"Peter","Albert"}
};
foreach( string str in names)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
Understanding the Array Class
The Array class, defined in the System namespace, is the base class for arrays in
C#. Array class is an abstract base class but it provides CreateInstance method to
construct an array. The Array class provides methods for creating, manipulating,
searching, and sorting arrays.
Table 1 describes Array class properties.
IsFixedSize
IsReadOnly
Rank
SyncRoot
Clear
This method removes all items of an array and sets a range of items
in the array to 0.
Clone
Copy
CopyTo
IndexOf
Initialize
LastIndexOf
Reverse
SetValue
This method sets the specified items in the current Array to the
specified value.
Sort