Windows Systems Programming: Spring 2004

[ Home | Syllabus | Course Notes | Assignments | Search]


Output Object not Overloading "ToString"/
Mixing types in an Array/Casting to "int" exception

Here is what happens if you try to print a class for which ToString has not been implemented. It prints out the class name of the object.

Also, as you stated, if I try to use foreach(int MyInt in MixedArray)
on an ArrayList that has mixed type objects I get an InvalidCastException.

I have attached my code that I used to run these experiments

James Mayor


using System;
using System.Collections;

public class MixedTypes
{
 static void Main()
 {
  try
  {
   ArrayList MixedArray = new ArrayList(50);

   for(int a = 0; a < 20; a++)
   {
    if(a < 5)
     MixedArray.Add(a);
    else
     if(a < 11)
     MixedArray.Add("Element Number {0}" + Convert.ToString(a));
    else
     if(a < 16)
     MixedArray.Add((float)(a) * 1.0);
    else
     if(a < 20)
     MixedArray.Add( new MyNewClass(a,a*10));
   }

   //This will print out all objects in MixedArray,
   //printing the class name of the object I created but
   //did not override the ToString function in
   Console.WriteLine("\n Output with a for loop");
   for(int b = 0; b < 20; b++)
   {
    Console.WriteLine(MixedArray[b]);
   }

   
   //This will print out all objects in MixedArray,
   //printing the class name of the object I created but
   //did not override the ToString function in
   Console.WriteLine("\n Output with a foreach loop using object as type");
   foreach(object MyObj in MixedArray)
   {
    Console.WriteLine(MyObj);
   }

   // This Will Throw and Exception because it casts all 
   // objects in MixedArray as int types
   Console.WriteLine("\n Output with a foreach loop using int as type");
   foreach(int MyInt in MixedArray)
   {
    Console.WriteLine(MyInt);
   }
  }
  catch(InvalidCastException e)
  {
   Console.WriteLine("{0} Exception caught", e);
  }
 }



}

public class MyNewClass
{
 public MyNewClass(int x, int y)
 {
  a = x;
  b = y;
 }

 public int a;
 public int b;
}

 


Copyright chris wild 1999-2004.
For problems or questions regarding this web contact [Dr. Wild].
Last updated: January 22, 2004.