using System.Collections.Generic;
public static void Main()
var result = new List<EquatableStruct> { new EquatableStruct() }.Contains(new EquatableStruct());
Console.WriteLine(result);
result = new List<PlainStruct> { new PlainStruct() }.Contains(new PlainStruct());
Console.WriteLine(result);
public struct EquatableStruct : IEquatable<EquatableStruct>
public bool Equals(EquatableStruct other)
Console.WriteLine("non-boxed Equals called.");
public override bool Equals(object other)
Console.WriteLine("boxed Equals called.");
public override int GetHashCode()
public struct PlainStruct
public bool Equals(EquatableStruct other)
Console.WriteLine("non-boxed Equals called.");
public override bool Equals(object other)
Console.WriteLine("boxed Equals called.");
public override int GetHashCode()