You are on page 1of 32

Chapter Three

3.2 Using Arrays

1
Objectives
• How to declare an array and assign values to
array elements
• How to initialize an array
• How to use subscripts to access array elements
• How to use the Length field
• How to use foreach to control array access

2
Objectives

• How to manually search an array to find an exact


match
• How to search an array to find a range match
• How to use the BinarySearch() method
• How to use the Sort() and Reverse() methods

3
Objectives

• How to pass an array to a method


• How to use parameter arrays
• How to declare an array of objects
• How to use the BinarySearch() and Sort() methods
with object arrays

4
Declaring an Array and Assigning Values to Array
Elements
• Sometimes storing just one value in memory at a time is not
adequate
• An array is a list of data items that all have the same type and
same name
• Example of array declaration:
double[] salesFigure;
• Like objects, memory is not actually reserved until the new
keyword is used
• Example: salesFigure = new double[20];

5
Declaring an Array and Assigning Values to Array
Elements

• A subscript or index is an integer contained within square


brackets that indicate the position of one of an array’s
variables, or elements
• An array’s elements are numbered beginning with 0
• A common mistake is to forget that the first element in an
array is element 0

6
Declaring an Array and Assigning Values to Array
Elements

• Output of the ArrayDemo1 program

7
Initializing an Array

• Arrays, like object fields, have default values


• You can assign nondefault values to array elements upon
creation
• Examples:
int[] myScores = new int[5] {100,76,88,100,90};
int[] myScores = new int[] {100,76,88,100,90};
int[] myScores = {100,76,88,100,90};

8
Using Subscripts to Access Array Elements

• The power of arrays become apparent when you begin to use


subscripts that are variables rather than constant values
• Example:theArray[sub] vs. theArray[1]
• A loop can be used to cycle through the elements of an array
• Through the use of loops and arrays, code can become more
efficient

9
Using the Length Field

• The subscript used to access an array must be between the


range of 0 to Length-1
• Because every array is automatically a member of the class
System.Array, you can use the fields and methods that are
part of the System.Array class
• The Length() field is a member of the System.Array class

10
Using foreach to Control Array Access

• C# supports a foreach statement that you can use to cycle


through every array element without using subscripts
• With the foreach statement, the programmer provides a
temporary variable that automatically holds each array value
in turn

11
Manually Searching an Array for an Exact Match

• One way to determine if some variable holds one of many


possible valid values is to use a series of if statements
• Instead of creating a long series of if statements, a more
efficient solution is to compare the variable against the items
in an array
• In certain situations, where arrays are involved, it might be a
good idea to use parallel arrays

12
Manually Searching an Array for an Exact Match

 Accessing information in parallel arrays

13
The BinarySearch() Method

• The BinarySearch() method finds a requested value in a


sorted array
• This method accepts two arguments: an array and the field to
be searched for
• The method returns –1 if the value is not found in the array,
otherwise it returns the index where the value is located

14
The BinarySearch() Method

• This method does NOT work under the following


conditions:
– If the array items are not arranged in ascending order, the
BinarySearch() method does not work correctly
– If the array holds duplicated values, then the BinarySearch
may not work
– If you want to find a range match rather that an exact
match, the BinarySearch() method does not work

15
Using the Sort() and Reverse() Methods

• The Sort() method arranges array items in ascending order

16
Using the Sort() and Reverse() Methods

• The Reverse() method reverses the order of items in an array

17
Writing Methods That Accept Array Parameters

• When you pass an array to a method, changes you make to


array elements within the method are permanent
• Arrays, like all objects, are passed by reference
• Within the method header, a parameter is declared as an
array using square brackets after the argument type

18
Using Parameter Arrays

• When you don’t know how many arguments you might


eventually send to a method, you can declare a local array
within the method header using the keyword param
• For example:
public static void DisplayStrings (param string[] people)

19
Using Parameter Arrays

 ParamsDemo program and the output

20
Declaring an Array of Objects

• You can declare arrays that hold elements of objects


• To use a method that belongs to an object that is part of an
array, insert the appropriate subscript notation after the array
name and before the dot-method
• Example:
– empArray[x].SetId(999)
– empArray[x].SetSalary(7.25)

21
Using the BinarySearch() and Sort() Methods
with Object Arrays
• The use of methods like BinarySearch() and Sort() become
complicated when you use them with arrays of user-defined
objects
• When you create a class containing many fields, you must tell
the compiler which field to use when making comparisons
• An interface is a collection of methods that can be used by
any class, as long as the class provides a definition to override
the interface’s abstract definition

22
Using the BinarySearch() and Sort() Methods
with Object Arrays
• C# contains an interface named IComparable, which contains
the definition for the CompareTo() method that compares
one object to another and returns an integer

23
Using the BinarySearch() and Sort() Methods
with Object Arrays
• When you create a class whose members you will want to
compare, you must include two additional features in your
class:
– A single colon and the interface name IComparable after the class
name
– You must write a method containing the header
int IComparable.CompareTo(Object o)

24
Using the BinarySearch() and Sort() Methods
with Object Arrays
• The CompareTo() method must return an integer value

25
Using the BinarySearch() and Sort() Methods
with Object Arrays

• IComparable.CompareTo() method for Employee class

26
Multidimensional Arrays

• A multidimensional is an 'array of arrays'.


• It is similar to tables in a database where each
primary element (row) is a collection of secondary
elements (columns).
• There are two types of multidimensional arrays in
C#:
– Rectangular array (one in which each row contains an
equal number of columns)
– Jagged array (one in which each row does not necessarily
contain an equal number of columns)

27
28
• Declaration
– int [,] myTable = new int[2,3];
• Set values
– myTable[0,1] =2;
– myTable[0,2] =12;
– myTable[1,O] =18;
– myTable[1,1] =74;
– myTable[1,2] =0;
• Instantiating and accessing Jagged Arrays
• A jagged may is one in which the length of each row is not the
same. For example we may wish to create a table with 3 rows
where the length of the first row is 3, the second row is 5 and the
third row is 2. We can instantiate this jagged may like this:
– int [] [] myTable = new int [3] [] ;
– myTable[O] = new int [3] ;
– myTable[1] = new int [5] ;
– myTable[2] = new int [2]; 29
Chapter Summary

• An array is a list of data items, all of which have the same


type and the same name
• In C#, arrays are objects of a class named System.Array; like
all objects, their fields are initialized to default values
• The power of arrays becomes apparent when you begin to
use subscripts that are variables rather than constant values
• When you work with array elements, you must ensure that
the subscript you use remains in the range 0 through length -
1

30
Chapter Summary

• You can use the foreach statement to cycle through every


array element without using subscripts
• When you want to determine whether some variable holds
one of many possible valid values, you can compare the
variable to a list of values in an array
• You can create parallel arrays to more easily perform a range
match
• The BinarySearch() method finds a requested value in a
sorted array
• The Sort() method arranges array items in ascending order.
The Reverse() method reverses the order of items in an array.

31
Chapter Summary

• You can pass a single array element to a method in exactly


the same manner as you would pass a variable. Alternatively,
instead of passing a single array element to a method, you
can pass an entire array.
• When you don’t know how many arguments you might
eventually send to a method, you can declare a local array
within the method header by using the keyword params
• Just as you can declare arrays of integers or doubles, you can
declare arrays that hold elements of any type
• When you create a class containing fields, you must create an
IComparable interface containing a CompareTo() method

32

You might also like