public static void RuntimeFieldHandleTest() { Type t = typeof(Derived); FieldInfo f = t.GetField(nameof(Base.MyField)); RuntimeFieldHandle h = f.FieldHandle; Assert.True(h.Value != IntPtr.Zero); Assert.Equal(h.GetHashCode(), h.GetHashCode()); Assert.Equal(default(RuntimeFieldHandle).GetHashCode(), default(RuntimeFieldHandle).GetHashCode()); Assert.True(h.Equals(h)); Assert.False(h.Equals(default(RuntimeFieldHandle))); Assert.False(default(RuntimeFieldHandle).Equals(h)); Assert.True(default(RuntimeFieldHandle).Equals(default(RuntimeFieldHandle))); Assert.True(h.Equals((object)h)); Assert.True(((IEquatable <RuntimeFieldHandle>)h).Equals(h)); Assert.False(h.Equals(new object())); Assert.False(h.Equals(null)); Assert.False(h == default(RuntimeFieldHandle)); Assert.True(h != default(RuntimeFieldHandle)); IntPtr hPtr = RuntimeFieldHandle.ToIntPtr(h); RuntimeFieldHandle hNew = RuntimeFieldHandle.FromIntPtr(hPtr); Assert.True(h.Equals(hNew)); Assert.True(hNew.Equals(h)); }