// Test for bug #56442 public class Params { public static readonly object[] test = new object[] { 1, "foo", 3.14 }; public static readonly object[] test_types = new object[] { typeof(int), typeof(string), typeof(double) }; public delegate void FOO(string s, params object[] args); public static void foo(string s, params object[] args) { if (args.Length != test.Length) throw new System.Exception("Length mismatch during " + s + " invocation"); for (int i = 0; i < args.Length; ++i) if (args[i].GetType() != test_types[i]) throw new System.Exception("Type mismatch: " + args[i].GetType() + " vs. " + test_types[i]); } public static void Main() { foo("normal", test); FOO f = new FOO(foo); f("delegate", test); } }