Csharp/C Sharp/Collections Data Structure/Array

Материал из .Net Framework эксперт
Версия от 14:39, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Array.AsReadOnly Method

<source lang="csharp">

using System; using System.Collections.Generic; using System.Collections.ObjectModel;

public class Starter {

   public static void Main() {
       int[] zArray = { 1, 2, 3, 4 };
       zArray[1] = 10;
       ReadOnlyCollection<int> roArray = Array.AsReadOnly(zArray);
       foreach (int number in roArray) {
           Console.WriteLine(number);
       }
       roArray[1] = 2; // compile error
   }

}

</source>


Array.Clone Method

<source lang="csharp"> using System; using System.Collections.Generic; public class Starter {

   public static void Main() {
       CommissionedEmployee[] salespeople =
               {new CommissionedEmployee("Bob"),
                new CommissionedEmployee("Ted"),
                new CommissionedEmployee("Sally")};
       Employee[] employees =
           (Employee[])salespeople.Clone();
       foreach (Employee person in
               employees) {
           person.Pay();
       }
   }

} public class Employee {

   public Employee(string name) {
       m_Name = name;
   }
   public virtual void Pay() {
       Console.WriteLine("Paying {0}", m_Name);
   }
   private string m_Name;

} public class CommissionedEmployee : Employee {

   public CommissionedEmployee(string name) :
       base(name) {
   }
   public override void Pay() {
       base.Pay();
       Console.WriteLine("Paying commissions");
   }

}

</source>


Array Conversions

<source lang="csharp"> // Arrays\Array Conversions using System; public class ArrayConversions {

   public static void PrintArray(object[] arr)
   {
       foreach (object obj in arr)
       Console.WriteLine("Word: {0}", obj);
   }
   public static void Main()
   {
       string s = "I will not buy this record, it is scratched.";
       char[] separators = {" "};
       string[] words = s.Split(separators);
       PrintArray(words);
   }

}

      </source>


Array.CreateInstance Method

<source lang="csharp"> using System; using System.Reflection; public class Starter {

   public static void Main(string[] argv) {
       Assembly executing = Assembly.GetExecutingAssembly();
       Type t = executing.GetType(argv[0]);
       Array zArray = Array.CreateInstance(t, argv.Length - 2);
       for (int count = 2; count < argv.Length; ++count) {
           System.Object obj = Activator.CreateInstance(t, new object[] {argv[count]});
           zArray.SetValue(obj, count - 2);
       }
       foreach (object item in zArray) {
           MethodInfo m = t.GetMethod(argv[1]);
           m.Invoke(item, null);
       }
   }

} public class MyClass {

   public MyClass(string info) {
       m_Info = "MyClass " + info;
   }
   public void ShowInfo() {
       Console.WriteLine(m_Info);
   }
   private string m_Info;

} public class YClass {

   public YClass(string info) {
       m_Info = "YClass " + info;
   }
   public void ShowInfo() {
       Console.WriteLine(m_Info);
   }
   private string m_Info;

} public class XClass {

   public XClass(string info) {
       m_Info = "XClass " + info;
   }
   public void ShowInfo() {
       Console.WriteLine(m_Info);
   }
   private string m_Info;

}

</source>


Array.FindAll Method: This is the syntax of the Predicate delegate:delegate bool Predicate<T>(T obj)

<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; public class MainClass {

   public static void Main() {
       int[] zArray = { 1, 2, 3, 1, 2, 3, 1, 2, 3 };
       Predicate<int> match = new Predicate<int>(MethodA<int>);
       int[] answers = Array.FindAll(zArray, match);
       foreach (int answer in answers) {
           Console.WriteLine(answer);
       }
   }
   public static bool MethodA<T>(T number) where T : IComparable {
       int result = number.rupareTo(3);
       return result == 0;
   }

}

</source>


Array.Resize Method

<source lang="csharp"> using System; public class Starter {

   public static void Main() {
       int[] zArray = { 1, 2, 3, 4 };
       Array.Resize<int>(ref zArray, 8);
       foreach (int number in zArray) {
           Console.WriteLine(number);
       }
   }

}

</source>


Array reverse and sort

<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765

  • /
using System;
namespace ReverseAndSort
{
   public class TesterReverseAndSort
   {
       public static void DisplayArray(object[] theArray)
       {
           foreach (object obj in theArray)
           {
               Console.WriteLine("Value: {0}", obj);
           }
           Console.WriteLine("\n");
       }
      public void Run()
      {
          String[] myArray =
            {
                "Who", "is", "John", "Galt"
            };
          Console.WriteLine("Display myArray...");
          DisplayArray(myArray);
          Console.WriteLine("Reverse and display myArray...");
          Array.Reverse(myArray);
          DisplayArray(myArray);
          String[] myOtherArray =
            {
                "We", "Hold", "These", "Truths",
                "To", "Be", "Self", "Evident",
          };
          Console.WriteLine("Display myOtherArray...");
          DisplayArray(myOtherArray);
          Console.WriteLine("Sort and display myOtherArray...");
          Array.Sort(myOtherArray);
          DisplayArray(myOtherArray);
      }
      [STAThread]
      static void Main()
      {
         TesterReverseAndSort t = new TesterReverseAndSort();
         t.Run();
      }
   }
}
          
      </source>


Arrays of Reference Types

<source lang="csharp"> // 16 - Arrays\Arrays of Reference Types class Employee {

   public static Employee LoadFromDatabase(int employeeID)
   {
       Employee emp = new Employee();
       return(emp);
   }

} public class ArraysofReferenceTypes {

   public static void Main()
   {
       Employee[] emps = new Employee[3];
       emps[0] = Employee.LoadFromDatabase(15);
       emps[1] = Employee.LoadFromDatabase(35);
       emps[2] = Employee.LoadFromDatabase(255);
   }

}

      </source>


Array.Sort by CultureInfo

<source lang="csharp">

using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Collections; using System.Globalization; class Program {

   static void DisplayNames(IEnumerable e) {
       foreach (string s in e)
           Console.Write(s + " - ");
   }
   static void Main(string[] args) {
       string[] names = {"Alabama", "Texas", "Washington", 
                "Virginia", "Wisconsin", "Wyoming", 
                "Kentucky", "Missouri", "Utah", "Hawaii", 
                "Kansas", "Lousiana", "Alaska", "Arizona"};
       Thread.CurrentThread.CurrentCulture = new CultureInfo("fi-FI");
       Array.Sort(names);
       DisplayNames(names);
       Array.Sort(names, Comparer.DefaultInvariant);
       Console.WriteLine("\nsorted with invariant culture...");
       DisplayNames(names);
   }

}

</source>


Array.SyncRoot Property: synchronize access to an array.

<source lang="csharp"> using System; using System.Threading; public class Starter {

   public static void Main() {
       Array.Sort(zArray);
       Thread t1 = new Thread(new ThreadStart(DisplayForward));
       Thread t2 = new Thread(new ThreadStart(DisplayReverse));
       t1.Start();
       t2.Start();
   }
   private static int[] zArray = { 1, 5, 4, 2, 4, 2, 9, 10 };
   public static void DisplayForward() {
       lock (zArray.SyncRoot) {
           Console.Write("\nForward: ");
           foreach (int number in zArray) {
               Console.Write(number);
           }
       }
   }
   public static void DisplayReverse() {
       lock (zArray.SyncRoot) {
           Array.Reverse(zArray);
           Console.Write("\nReverse: ");
           foreach (int number in zArray) {
               Console.Write(number);
           }
           Array.Reverse(zArray);
       }
   }

}

</source>


A run-time error occurs when Array.Sort is called: XClass does not implement the IComparable interface.

<source lang="csharp"> using System; public class Starter {

   public static void Main() {
       XClass[] objs ={new XClass(5), new XClass(10),
               new XClass(1)};
       Array.Sort(objs);
   }

} public class XClass {

   public XClass(int data) {
       propNumber = data;
   }
   private int propNumber;
   public int Number {
       get {
           return propNumber;
       }
   }

}

</source>


Assigning array reference variables

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Assigning array reference variables.

using System;

public class AssignARef {

 public static void Main() {  
   int i; 

   int[] nums1 = new int[10]; 
   int[] nums2 = new int[10]; 

   for(i=0; i < 10; i++) nums1[i] = i; 

   for(i=0; i < 10; i++) nums2[i] = -i; 

   Console.Write("Here is nums1: "); 
   for(i=0; i < 10; i++) 
     Console.Write(nums1[i] + " ");   
   Console.WriteLine(); 

   Console.Write("Here is nums2: "); 
   for(i=0; i < 10; i++) 
     Console.Write(nums2[i] + " ");   
   Console.WriteLine(); 

   nums2 = nums1; // now nums2 refers to nums1 

   Console.Write("Here is nums2 after assignment: "); 
   for(i=0; i < 10; i++) 
     Console.Write(nums2[i] + " ");   
   Console.WriteLine(); 

  // now operate on nums1 array through nums2 
  nums2[3] = 99; 

   Console.Write("Here is nums1 after change through nums2: "); 
   for(i=0; i < 10; i++) 
     Console.Write(nums1[i] + " ");   
   Console.WriteLine(); 
 }  

}

      </source>


Class array

<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765

  • /
using System;
namespace ArrayDemo
{
    // a simple class to store in the array
    class Employee
    {
        private int empID;
        // constructor
        public Employee(int empID)
        {
            this.empID = empID;
        }
        public override string ToString()
        {
            return empID.ToString();
        }
    }
   public class TesterClassArray
   {
      public void Run()
      {
          int[] intArray;
          Employee[] empArray;
          intArray = new int[5];
          empArray = new Employee[3];
          // populate the array
          for (int i = 0;i<empArray.Length;i++)
          {
              empArray[i] = new Employee(i+5);
          }
          Console.WriteLine("The int array...");
          for (int i = 0;i<intArray.Length;i++)
          {
              Console.WriteLine(intArray[i].ToString());
          }
          Console.WriteLine("\nThe employee array...");
          for (int i = 0;i<empArray.Length;i++)
          {
              Console.WriteLine(empArray[i].ToString());
          }
      }
      [STAThread]
      static void Main()
      {
         TesterClassArray t = new TesterClassArray();
         t.Run();
      }
   }
}
          
      </source>


Class array init

<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765

  • /
using System;
namespace ArrayDemo
{
    // a simple class to store in the array
    class Employee
    {
        private int empID;
        // constructor
        public Employee(int empID)
        {
            this.empID = empID;
        }
    }
    public class TesterArrayDemoInit
    {
        public void Run()
        {
            int[] intArray;
            Employee[] empArray;
            intArray = new int[5];
            empArray = new Employee[3];
            // populate the array
            for (int i = 0;i<empArray.Length;i++)
            {
                empArray[i] = new Employee(i+5);
            }
        }
        [STAThread]
        static void Main()
        {
            TesterArrayDemoInit t = new TesterArrayDemoInit();
            t.Run();
        }
    }
}
          
      </source>


Compute the average of a set of values

<source lang="csharp"> // Compute the average of a set of values.

using System;

public class Average1 {

 public static void Main() {  
   int[] nums = new int[10]; 
   int avg = 0; 

   nums[0] = 99; 
   nums[1] = 10; 
   nums[2] = 100; 
   nums[3] = 18; 
   nums[4] = 78; 
   nums[5] = 23; 
   nums[6] = 63; 
   nums[7] = 9; 
   nums[8] = 87; 
   nums[9] = 49; 

   for(int i=0; i < 10; i++)  
     avg = avg + nums[i]; 

   avg = avg / 10; 

   Console.WriteLine("Average: " + avg); 
 }  

}

      </source>


Compute the average of a set of values 2

<source lang="csharp"> // Compute the average of a set of values.

using System;

public class Average {

 public static void Main() {  
   int[] nums = { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 }; 
   int avg = 0;; 

   for(int i=0; i < 10; i++)  {
     avg = avg + nums[i]; 
   }  

   avg = avg / 10; 

   Console.WriteLine("Average: " + avg); 
 }  

}

      </source>


Copy an array

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Copy an array.

using System;

public class CopyDemo {

 public static void Main() {     
   int[] source = { 1, 2, 3, 4, 5 }; 
   int[] target = { 11, 12, 13, 14, 15 }; 
   int[] source2 = { -1, -2, -3, -4, -5 }; 

   // Display source. 
   Console.Write("source: "); 
   foreach(int i in source)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Display original target. 
   Console.Write("Original contents of target: "); 
   foreach(int i in target)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Copy the entire array. 
   Array.Copy(source, target, source.Length); 

   // Display copy. 
   Console.Write("target after copy:  "); 
   foreach(int i in target)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Copy into middle of target. 
   Array.Copy(source2, 2, target, 3, 2); 

   // Display copy. 
   Console.Write("target after copy:  "); 
   foreach(int i in target)  
     Console.Write(i + " "); 
   Console.WriteLine(); 
 } 

}


      </source>


Creates an and array and looks for the index of a given value from either end

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// // Index.cs -- Creates an and array and looks for the index of a given // value from either end. // // Compile this program with the following command line: // C:>csc Index.cs // namespace nsArray {

   using System;
   
   public class Index
   {
       static public void Main ()
       {
           int [] Arr = new int [12]
                       {29, 82, 42, 46, 54, 65, 50, 42, 5, 94, 19, 34};
           Console.WriteLine ("The first occurrence of 42 is at index "
                              + Array.IndexOf(Arr, 42));
           Console.WriteLine ("The last occurrence of 42 is at index "
                              + Array.LastIndexOf(Arr, 42));
           int x = 0;
           while ((x = Array.IndexOf (Arr, 42, x)) >= 0)
           {
               Console.WriteLine ("42 found at index " + x);
               ++x;
           }
           x = Arr.Length - 1;
           while ((x = Array.LastIndexOf (Arr, 42, x)) >= 0)
           {
               Console.WriteLine ("42 found at index " + x);
               --x;
           }
       }
   }

}


      </source>


Creates and implements an instance of Array

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// // CreatArr.cs -- Creates and implements an instance of Array // // Compile this program with the following command line: // C:>csc CreatArr.cs // namespace nsArray {

   using System;
   
   public class CreatArr
   {
       static public void Main ()
       {
           DateTime now = DateTime.Now;
           Random rand = new Random ((int) now.Millisecond);
           // Create an instance of the Array class.
           Array Arr = Array.CreateInstance (typeof(Int32), 10);
           
           // Initialize the elements using the SetValue() member method
           // Use the GetLowerBound() and GetUpperBound() methods for safe access.
           for (int x = Arr.GetLowerBound(0); x < Arr.GetUpperBound(0) + 1; ++x)
           {
               Arr.SetValue (rand.Next () % 100, x);
           }
           int Total = 0;
           Console.Write ("Array values are ");
           
           // Use the foreach loop on the Array instance
           foreach (int val in Arr)
           {
               Total += val;
               Console.Write (val + ", ");
           }
           Console.WriteLine ("and the average is {0,0:F1}",
                             (double) Total / (double) Arr.Length);
       }
   }

}


      </source>


Demonstrate an array overrun

<source lang="csharp"> // Demonstrate an array overrun.

using System;

public class ArrayErr {

 public static void Main() {  
   int[] sample = new int[10]; 
   int i;  
 
   // generate an array overrun 
   for(i = 0; i < 100; i = i+1)  {
     sample[i] = i; 
   }  
 }  

}


      </source>


Demonstrate a one-dimensional array

<source lang="csharp"> // Demonstrate a one-dimensional array.

using System;

public class ArrayDemo {

 public static void Main() {  
   int[] sample = new int[10]; 
   int i;  
 
   for(i = 0; i < 10; i = i+1) { 
     sample[i] = i; 
   }  

   for(i = 0; i < 10; i = i+1)  {
     Console.WriteLine("sample[" + i + "]: " + sample[i]);  
   }
 }  

}


      </source>


Enumerates an array using an enumerator object

<source lang="csharp"> using System; using System.Collections; public class Starter {

   public static void Main() {
       int[] numbers = { 1, 2, 3, 4, 5 };
       IEnumerator e = numbers.GetEnumerator();
       while (e.MoveNext()) {
           Console.WriteLine(e.Current);
       }
   }

}

</source>


illustrates an attempt to write to a nonexistent array element

<source lang="csharp"> /*

 illustrates an attempt to write to a nonexistent array element
  • /

using System; public class Example10_2 {

 public static void Main() {
   try {
     int[] intArray = new int[5];
     for (int counter = 0; counter <= intArray.Length; counter++)
     {
       intArray[counter] = counter;
       Console.WriteLine("intArray[" + counter + "] = " + intArray[counter]);
     }
   }
   catch (IndexOutOfRangeException e)
   {
     Console.WriteLine("IndexOutOfRangeException occurred");
     Console.WriteLine("Message = " + e.Message);
     Console.WriteLine("Stack trace = " + e.StackTrace);
   }
 }

}

      </source>


illustrates how to initialize arrays

<source lang="csharp"> /*

 Example10_3.cs illustrates how to initialize arrays
  • /

using System; public class Example10_3 {

 public static void Main() {
   // int arrays
   int[] intArray = new int[5] {10, 20, 30, 40, 50};
   for (int counter = 0; counter < intArray.Length; counter++)
   {
     Console.WriteLine("intArray[" + counter + "] = " +
       intArray[counter]);
   }
   // char arrays
   char[] charArray = new char[] {"h", "e", "l", "l", "o"};
   for (int counter = 0; counter < charArray.Length; counter++)
   {
     Console.WriteLine("charArray[" + counter + "] = " +
       charArray[counter]);
   }
   // string arrays
   string[] stringArray = {"Hello", "World"};
   foreach (string myString in stringArray)
   {
     Console.WriteLine("myString = " + myString);
   }
 }

}


      </source>


illustrates how to use array properties and methods

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example10_5.cs illustrates how to use array properties
 and methods
  • /

using System; public class Example10_5 {

 public static void Main()
 {
   // use the Sort() method to sort the elements in an int array
   int[] intArray = {5, 2, 3, 1, 6, 9, 7, 14, 25};
   Array.Sort(intArray);  // sort the elements
   Console.WriteLine("Sorted intArray:");
   for (int counter = 0; counter < intArray.Length; counter++)
   {
     Console.WriteLine("intArray[" + counter + "] = " +
       intArray[counter]);
   }
   // use the Sort() method to sort the elements in a string array
   string[] stringArray = {"this", "is", "a", "test", "abc123", "abc345"};
   Array.Sort(stringArray);  // sort the elements
   Console.WriteLine("Sorted stringArray:");
   for (int counter = 0; counter < stringArray.Length; counter++)
   {
     Console.WriteLine("stringArray[" + counter + "] = " +
       stringArray[counter]);
   }
   // use the Sort() method to sort the elements in a char array
   char[] charArray = {"w", "e", "l", "c", "o", "m", "e"};
   Array.Sort(charArray);  // sort the elements
   Console.WriteLine("Sorted charArray:");
   for (int counter = 0; counter < charArray.Length; counter++)
   {
     Console.WriteLine("charArray[" + counter + "] = " +
       charArray[counter]);
   }
   // use the BinarySearch() method to search intArray for the number 5
   int index = Array.BinarySearch(intArray, 5);
   Console.WriteLine("Array.BinarySearch(intArray, 5) = " + index);
   // use the BinarySearch() method to search intArray for the number 4
   // (this number doesn"t exist in intArray, and therefore BinarySearch()
   // returns a negative value)
   index = Array.BinarySearch(intArray, 4);
   Console.WriteLine("Array.BinarySearch(intArray, 4) = " + index);
   // use the BinarySearch() method to search stringArray for "abc345"
   index = Array.BinarySearch(stringArray, "abc345");
   Console.WriteLine("Array.BinarySearch(stringArray, \"abc345\") = " + index);
   // use the BinarySearch() method to search charArray for "o"
   index = Array.BinarySearch(charArray, "o");
   Console.WriteLine("Array.BinarySearch(charArray, "o") = " + index);
   // use the Reverse() method to reverse the elements in intArray
   Array.Reverse(intArray);
   Console.WriteLine("Reversed intArray:");
   for (int counter = 0; counter < intArray.Length; counter++)
   {
     Console.WriteLine("intArray[" + counter + "] = " +
       intArray[counter]);
   }
   // use the Reverse() method to reverse the elements in stringArray
   Array.Reverse(stringArray);
   Console.WriteLine("Reversed stringArray:");
   for (int counter = 0; counter < stringArray.Length; counter++)
   {
     Console.WriteLine("stringArray[" + counter + "] = " +
       stringArray[counter]);
   }
   // use the Reverse() method to reverse the elements in charArray
   Array.Reverse(charArray);
   Console.WriteLine("Reversed charArray:");
   for (int counter = 0; counter < charArray.Length; counter++)
   {
     Console.WriteLine("charArray[" + counter + "] = " +
       charArray[counter]);
   }
   // create another array of int values named intArray2
   int[] intArray2 = {1, 2, 1, 3};
   Console.WriteLine("intArray2:");
   for (int counter = 0; counter < intArray2.Length; counter++)
   {
     Console.WriteLine("intArray2[" + counter + "] = " +
       intArray2[counter]);
   }
   // use the IndexOf() and LastIndexOf() methods to find the value 1
   // in intArray2
   index = Array.IndexOf(intArray2, 1);
   Console.WriteLine("Array.IndexOf(intArray2, 1) = " + index);
   index = Array.LastIndexOf(intArray2, 1);
   Console.WriteLine("Array.LastIndexOf(intArray2, 1) = " + index);
   // create another array of strings named stringArray2
   string[] stringArray2 = {"Hello", "to", "everyone", "Hello", "all"};
   Console.WriteLine("stringArray2:");
   for (int counter = 0; counter < stringArray2.Length; counter++)
   {
     Console.WriteLine("stringArray2[" + counter + "] = " +
       stringArray2[counter]);
   }
   // use the IndexOf() and LastIndexOf() methods to find the string "Hello"
   // in intArray2
   index = Array.IndexOf(stringArray2, "Hello");
   Console.WriteLine("Array.IndexOf(stringArray2, \"Hello\") = " + index);
   index = Array.LastIndexOf(stringArray2, "Hello");
   Console.WriteLine("Array.LastIndexOf(stringArray2, \"Hello\") = " + index);
 }

}

      </source>


illustrates how to use arrays 2

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example10_1.cs illustrates how to use arrays
  • /

using System; public class Example10_1 {

 public static void Main()
 {
   // int arrays
   int[] intArray = new int[10];
   int arrayLength = intArray.Length;
   Console.WriteLine("arrayLength = " + arrayLength);
   for (int counter = 0; counter < arrayLength; counter++)
   {
     intArray[counter] = counter;
     Console.WriteLine("intArray[" + counter + "] = " +
       intArray[counter]);
   }
   // char arrays
   char[] charArray = new char[5];
   Console.WriteLine("charArray[0] = " + charArray[0]);
   charArray[0] = "h";
   charArray[1] = "e";
   charArray[2] = "l";
   charArray[3] = "l";
   charArray[4] = "o";
   for (int counter = 0; counter < charArray.Length; counter++)
   {
     Console.WriteLine("charArray[" + counter + "] = " +
       charArray[counter]);
   }
   // string arrays
   string[] stringArray = new string[2];
   Console.WriteLine("stringArray[0] = " + stringArray[0]);
   stringArray[0] = "Hello";
   stringArray[1] = "World";
   foreach (string myString in stringArray)
   {
     Console.WriteLine("myString = " + myString);
   }
 }

}

      </source>


illustrates the use of an array of objects

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example10_10.cs illustrates the use of
 an array of objects
  • /

using System;

// declare the Star class class Star {

 // declare two fields
 public string name;
 public int brightness;
 // declare a constructor
 public Star(
   string name,
   int brightness
 )
 {
   this.name = name;
   this.brightness = brightness;
 }

}

public class Example10_10 {

 public static void Main()
 {
   // create the galaxy array of Star objects
   Star[,,] galaxy = new Star[10, 5, 3];
   // create two Star objects in the galaxy array
   galaxy[1, 3, 2] = new Star("Sun", 3);
   galaxy[4, 1, 2] = new Star("Alpha Centuri", 9);
   // display the Rank and Length properties of the galaxy array
   Console.WriteLine("galaxy.Rank (number of dimensions) = " + galaxy.Rank);
   Console.WriteLine("galaxy.Length (number of elements) = " + galaxy.Length);
   // display the galaxy array elements
   for (int x = 0; x < galaxy.GetLength(0); x++)
   {
     for (int y = 0; y < galaxy.GetLength(1); y++)
     {
       for (int z = 0; z < galaxy.GetLength(2); z++)
       {
         if (galaxy[x, y, z] != null)
         {
           Console.WriteLine("galaxy[" + x + ", " + y + ", " + z +"].name = " +
             galaxy[x, y, z].name);
           Console.WriteLine("galaxy[" + x + ", " + y + ", " + z +"].brightness = " +
             galaxy[x, y, z].brightness);
         }
       }
     }
   }
 }

}

      </source>


Jagged Array Demo

<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765

  • /
using System;
namespace JaggedArray
{
    public class TesterJaggedArray
    {
        [STAThread]
        static void Main()
        {
            const int rows = 4;
            const int rowZero = 5;  // num elements
            const int rowOne = 2;
            const int rowTwo = 3;
            const int rowThree = 5;
            // declare the jagged array as 4 rows high
            int[][] jaggedArray = new int[rows][];
            // declare the rows of various lengths
            jaggedArray[0] = new int[rowZero];
            jaggedArray[1] = new int[rowOne];
            jaggedArray[2] = new int[rowTwo];
            jaggedArray[3] = new int[rowThree];
            // Fill some (but not all) elements of the rows
            jaggedArray[0][3] = 15;
            jaggedArray[1][1] = 12;
            jaggedArray[2][1] = 9;
            jaggedArray[2][2] = 99;
            jaggedArray[3][0] = 10;
            jaggedArray[3][1] = 11;
            jaggedArray[3][2] = 12;
            jaggedArray[3][3] = 13;
            jaggedArray[3][4] = 14;
            for (int i = 0;i < rowZero; i++)
            {
                Console.WriteLine("jaggedArray[0][{0}] = {1}",
                    i,jaggedArray[0][i]);
            }
            for (int i = 0;i < rowOne; i++)
            {
                Console.WriteLine("jaggedArray[1][{0}] = {1}",
                    i,jaggedArray[1][i]);
            }
            for (int i = 0;i < rowTwo; i++)
            {
                Console.WriteLine("jaggedArray[2][{0}] = {1}",
                    i,jaggedArray[2][i]);
            }
            for (int i = 0;i < rowThree; i++)
            {
                Console.WriteLine("jaggedArray[3][{0}] = {1}",
                    i,jaggedArray[3][i]);
            }
        }
    }
}
          
      </source>


Multi Dimensional Arrays

<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765

  • /
using System;
namespace MultiDimensionalArrays
{
   public class TesterMultiDimensionalArrays
   {
      [STAThread]
      static void Main()
      {
          const int rows = 4;
          const int columns = 3;
          // declare a 4x3 integer array
          int[,] rectangularArray = new int[rows, columns];
          // populate the array
          for (int i = 0;i < rows;i++)
          {
              for (int j = 0;j<columns;j++)
              {
                  rectangularArray[i,j] = i+j;
              }
          }
          // report the contents of the array
          for (int i = 0;i < rows;i++)
          {
              for (int j = 0;j<columns;j++)
              {
                  Console.WriteLine("rectangularArray[{0},{1}] = {2}",
                      i,j,rectangularArray[i,j]);
              }
          }
      }
   }
}
          
      </source>


Reverse an array

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Reverse an array.

using System;

public class ReverseDemo {

 public static void Main() {     
   int[] nums = { 1, 2, 3, 4, 5 }; 
  
   // Display original order. 
   Console.Write("Original order: "); 
   foreach(int i in nums)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Reverse the entire array. 
   Array.Reverse(nums); 

   // Display reversed order. 
   Console.Write("Reversed order: "); 
   foreach(int i in nums)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Reverse a range. 
   Array.Reverse(nums, 1, 3); 

   // Display reversed order. 
   Console.Write("Range reversed: "); 
   foreach(int i in nums)  
     Console.Write(i + " "); 
   Console.WriteLine(); 
 } 

}


      </source>


Reverse an array 2

<source lang="csharp"> // Reverse an array.

using System;

public class RevCopy {

 public static void Main() {  
   int i,j; 
   int[] nums1 = new int[10]; 
   int[] nums2 = new int[10]; 

   for(i=0; i < nums1.Length; i++) nums1[i] = i; 

   Console.Write("Original contents: "); 
   for(i=0; i < nums2.Length; i++) 
     Console.Write(nums1[i] + " ");   

   Console.WriteLine(); 

   // reverse copy nums1 to nums2 
   if(nums2.Length >= nums1.Length){
     for(i=0, j=nums1.Length-1; i < nums1.Length; i++, j--) {
       nums2[j] = nums1[i]; 
     }  
   }
   Console.Write("Reversed contents: "); 
   for(i=0; i < nums2.Length; i++) 
     Console.Write(nums2[i] + " ");   

   Console.WriteLine(); 
 } 

}


      </source>


Sort an array and search for a value

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Sort an array and search for a value.

using System;

public class SortDemo {

 public static void Main() {     
   int[] nums = { 5, 4, 6, 3, 14, 9, 8, 17, 1, 24, -1, 0 }; 
  
   // Display original order. 
   Console.Write("Original order: "); 
   foreach(int i in nums)  
     Console.Write(i + " "); 
   Console.WriteLine(); 

   // Sort the array. 
   Array.Sort(nums); 

   // Display sorted order. 
   Console.Write("Sorted order:   "); 
   foreach(int i in nums)  
     Console.Write(i + " "); 
   Console.WriteLine(); 


   // Search for 14. 
   int idx = Array.BinarySearch(nums, 14); 

   Console.WriteLine("Index of 14 is " + idx); 
 }     

}


      </source>


Sort and search an array of objects

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Sort and search an array of objects.

using System;

class MyClass : IComparable {

 public int i; 
 
 public MyClass(int x) { i = x; } 

 // Implement IComparable. 
 public int CompareTo(object v) { 
   return i - ((MyClass)v).i; 
 } 

}

public class SortDemo1 {

 public static void Main() {     
   MyClass[] nums = new MyClass[5]; 

   nums[0] = new MyClass(5); 
   nums[1] = new MyClass(2); 
   nums[2] = new MyClass(3); 
   nums[3] = new MyClass(4); 
   nums[4] = new MyClass(1); 
  
   // Display original order. 
   Console.Write("Original order: "); 
   foreach(MyClass o in nums)  
     Console.Write(o.i + " "); 
   Console.WriteLine(); 

   // Sort the array. 
   Array.Sort(nums); 

   // Display sorted order. 
   Console.Write("Sorted order:   "); 
   foreach(MyClass o in nums)  
     Console.Write(o.i + " "); 
   Console.WriteLine(); 

   // Search for MyClass(2). 
   MyClass x = new MyClass(2); 
   int idx = Array.BinarySearch(nums, x); 

   Console.WriteLine("Index of MyClass(2) is " + idx); 
 }     

}


      </source>


Stores a sequence of temperatures in an array

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// GetTemps.cs -- Stores a sequence of temperatures in an array // // Compile this program with the following command line: // C:>csc GetTemps.cs // namespace nsTemperatures {

   using System;
   
   public class GetTemps
   {
       static public void Main ()
       {
           int [] Temps = new int [24]
                          {48, 47, 45, 45, 44, 45, 48, 54,
                           59, 64, 70, 75, 86, 92, 98, 101,
                           99, 97, 96, 91, 82, 70, 63, 55}
           ;
           for (int x = 0; x < 24; ++x)
           {
               while (true)
               {
                   Console.Write ("Enter the temperature for " + 
                                   (x == 0 ? "Midnight"
                                   : (x == 12 ? "Noon"
                                   : ((x < 12 ? x.ToString() + " a."
                                   : ((x - 12).ToString() + " p."))
                                   + "m."))) + ": "
                                 );
                   try
                   {
                       Temps[x] = Convert.ToInt32 (Console.ReadLine ());
                       break;
                   }
                   catch
                   {
                        Console.WriteLine ("\r\nPlease enter a number value.");
                   }
               }
           }
           Console.WriteLine ("The daily temperature report:");
           for (int x = 0; x < 24; x += 4)
           {
               Console.WriteLine ("{0,4:D4} : {1,3:D}\t{2,4:D4}: {3,3:D}\t" +
                                  "{4,4:D4}: {5,3:D}\t{6,4:D4}: {7,3:D}",
                                  x * 100, Temps[x],
                                  (x + 1) * 100, Temps[x + 1],
                                  (x + 2) * 100, Temps[x + 2],
                                  (x + 3) * 100, Temps[x + 3]);
           }
       }
   }

}


      </source>


Sums the values in an array using a foreach loop 1

<source lang="csharp"> // Sums the values in an array using a foreach loop

   using System;
   
   public class InitArr
   {
       static public void Main ()
       {
            DateTime now = DateTime.Now;
            Random rand = new Random ((int) now.Millisecond);
            int [] Arr = new int []
                       {rand.Next () % 100, rand.Next () % 100,
                        rand.Next () % 100, rand.Next () % 100,
                        rand.Next () % 100, rand.Next () % 100,
                        rand.Next () % 100, rand.Next () % 100,
                        rand.Next () % 100, rand.Next () % 100
                       };
            int Total = 0;
            Console.Write ("Array values are ");
            foreach (int val in Arr)
            {
                Total += val;
                Console.Write (val + ", ");
            } 
            Console.WriteLine ("and the average is {0,0:F1}",
                              (double) Total / (double) Arr.Length);
       }
   }


      </source>


System.Array Type:Reverse

<source lang="csharp"> using System; public class SystemArrayTypeReverse {

   public static void Main()
   {
       int[] arr = {5, 6, 7};
       Array.Reverse(arr);
       foreach (int value in arr)
       {
           Console.WriteLine("Value: {0}", value);
       }
   }

}

      </source>


Use object to create a generic array

<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852

  • /

// Use object to create a generic array.

using System;

public class GenericDemo {

 public static void Main() {   
   object[] ga = new object[10]; 
 
   // store ints 
   for(int i=0; i < 3; i++) 
     ga[i] = i; 
 
   // store doubles 
   for(int i=3; i < 6; i++) 
     ga[i] = (double) i / 2;  


   // store two strings, a bool, and a char 
   ga[6] = "Generic Array"; 
   ga[7] = true; 
   ga[8] = "X"; 
   ga[9] = "end"; 

   for(int i = 0; i < ga.Length; i++) 
     Console.WriteLine("ga[" + i + "]: " + ga[i] + " "); 

 }  

}

      </source>


Uses the Array.Copy() method to copy an array of ints into an array of doubles 2

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// // Int2Dbl.cs -- Uses the Array.Copy() method to copy an array of ints // into an array of doubles. // // Compile this program with the following command line: // C:>csc Int2Dbl.cs // namespace nsArray {

   using System;
   
   public class Int2Dbl
   {
       static public void Main ()
       {
           DateTime now = DateTime.Now;
           Random rand = new Random ((int) now.Millisecond);
           int [] iArr = new int [10]
                   {
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101
                   };
                   
           double [] dArr = new double [8];
           Array.Copy (iArr, dArr, dArr.Length);
           Console.Write ("The dArr contains:\r\n    ");
           foreach (double d in dArr)
           {
               Console.Write ("{0,4:F1}  ", d);
           }
           Console.Write ("\r\n\r\nThe iArr contains:\r\n    ");
           foreach (int x in iArr)
           {
               Console.Write (x + "  ");
           }
           Console.WriteLine ();
       }
   }

}


      </source>


Uses the Array.Copy() method to copy part of an array ints into a secton of an array of doubles

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// // CopyPart.cs -- Uses the Array.Copy() method to copy part of an array // ints into a secton of an array of doubles. // // Compile this program with the following command line: // C:>csc CopyPart.cs // namespace nsArray {

   using System;
   
   public class CopyPart
   {
       static public void Main ()
       {
           DateTime now = DateTime.Now;
           Random rand = new Random ((int) now.Millisecond);
           int [] iArr = new int [12]
                   {
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101,
                       rand.Next() % 101, rand.Next() % 101
                   };
                   
           double [] dArr = new double [14];
           Array.Copy (iArr, 2, dArr, 4, 8);
           Console.Write ("The dArr contains:\r\n    ");
           for (int x = 0; x < dArr.Length; ++x)
           {
               Console.Write ("{0,4:F1}  ", dArr[x]);
               if (x == 6)
                   Console.Write("\r\n    ");
           }
           Console.Write ("\r\n\r\nThe iArr contains:\r\n    ");
           foreach (int x in iArr)
           {
               Console.Write (x + "  ");
           }
           Console.WriteLine ();
       }
   }

}


      </source>


Use the Length array property

<source lang="csharp"> // Use the Length array property.

using System;

public class LengthDemo {

 public static void Main() {  
   int[] nums = new int[10];  

   Console.WriteLine("Length of nums is " + nums.Length);  
 
   for(int i=0; i < nums.Length; i++)  
     nums[i] = i * i;  
 
   Console.Write("Here is nums: "); 
   for(int i=0; i < nums.Length; i++)  
     Console.Write(nums[i] + " ");  

   Console.WriteLine(); 
 }  

}

      </source>