Actually, after some fiddling, I've found a way how to do it. You don't need to "cast" the type if you use a generic method: class Program { static void MyMethodWithUnknownInputType(T[] Argument) { Console.WriteLine("Current input type is: {0}", Argument.GetType().ToString()); Console.WriteLine("Array contents:"); foreach (T Item in Argument) { Console.Write("{0} ", Item.ToString()); } Console.WriteLine("\n"); } static void Main() { string[] MyStringArray = { "String1", "String2", "String3", "String4", "String5" }; int[] MyIntArray = { 2, 4, 8, 16, 32 }; MyMethodWithUnknownInputType(MyStringArray); MyMethodWithUnknownInputType(MyIntArray); } } The output of this program: Current input type is: System.String[] Array contents: String1 String2 String3 String4 String5 Current input type is: System.Int32[] Array contents: 2 4 8 16 32 Michal -- modified at 18:36 Wednesday 13th September, 2006