using System.Collections.Generic; using UnboxTest; using BoxTest; public class ClassA {} public struct GenStruct { T t; int field; public GenStruct (T _t, int _field) { t = _t; field = _field; } public bool isEqualTo (GenStruct gs) { EqualityComparer comp = EqualityComparer.Default; return comp.Equals(gs.t, t) && gs.field == field; } } public class GenClass { public object boxStruct (GenStruct gs) { return (object)gs; } /* public object boxNullableStruct (GenStruct? gs) { return (object)gs; } */ } public class main { public static int Main () { GenClass gci = new GenClass (); GenStruct gsi = new GenStruct (123, 456); if (!gsi.isEqualTo ((GenStruct)gci.boxStruct (gsi))) return 1; /* if (!gsi.isEqualTo ((GenStruct)gci.boxNullableStruct (gsi))) return 1; if (gci.boxNullableStruct (null) != null) return 1; */ GenClass gca = new GenClass (); GenStruct gsa = new GenStruct (new ClassA (), 789); if (!gsa.isEqualTo ((GenStruct)gca.boxStruct (gsa))) return 1; /* if (!gsa.isEqualTo ((GenStruct)gca.boxNullableStruct (gsa))) return 1; if (gca.boxNullableStruct (null) != null) return 1; */ UnboxerStruct us; Boxer b = new Boxer (); us.field = 123; if (((UnboxerStruct?)b.boxNullable (us)).Value.field != 123) return 1; if (b.boxNullable (null) != null) return 1; return 0; } }