using System;
+using System.Collections;
using System.Runtime.CompilerServices;
public interface X
}
}
+ [IndexerName ("Whatever")]
+ public float this [long a, int b] {
+ get {
+ return a / b;
+ }
+ }
+
public int InstanceTest ()
{
double index = 5;
if (y [index] != 3)
return 5;
- return z.InstanceTest ();
+ int retval = z.InstanceTest ();
+ if (retval != 0)
+ return retval;
+
+ B b = new B ();
+ if (b [4] != 16)
+ return 8;
+ if (b [3,5] != 15)
+ return 9;
+
+ D d = new D ();
+ if (d [4] != 16)
+ return 10;
+ if (d [3,5] != 15)
+ return 11;
+
+ //
+ // Now test for bug 35492
+ //
+ ChildList xd = new ChildList ();
+
+ xd.Add (0);
+ if (0 != (int)xd [0])
+ return 12;
+
+ xd.Test ();
+ if (1 != (int) xd [0])
+ return 13;
+
+ return 0;
+ }
+
+ class MyArray : ArrayList
+ {
+ public override object this[int index]
+ {
+ get { return base[index]; }
+ set { base[index] = value;}
+ }
}
public static int Main ()
Console.WriteLine ("RESULT: " + result);
+ E e = new E ();
+ e.g = "monkey";
+
+ //
+ // Now test base [...]
+ //
+ MyArray arr = new MyArray ( );
+ arr.Add ( "String value" );
+ if (arr[0].ToString () != "String value")
+ return 100;
+
return result;
}
+
+}
+
+public class A
+{
+ [IndexerName("Monkey")]
+ public int this [int value] {
+ get {
+ return value * 4;
+ }
+ }
+}
+
+public class B : A
+{
+ public long this [long a, int value] {
+ get {
+ return a * value;
+ }
+ }
+}
+
+public class C
+{
+ public int this [int value] {
+ get {
+ return value * 4;
+ }
+ }
+}
+
+public class D : C
+{
+ public long this [long a, int value] {
+ get {
+ return a * value;
+ }
+ }
+}
+
+public class E {
+ public virtual string g {
+ get { return "g"; }
+ set { }
+ }
+}
+
+public class F : E {
+ public override string g {
+ get { return "h"; }
+ }
}
+
+public class DisposableNotifyList : ArrayList
+ {
+ }
+
+public class ChildList : DisposableNotifyList
+ {
+ public void Test()
+ {
+ base[0] = 1;
+
+ }
+ }