public interface IInterface {
public class SomeClass<T> : IInterface {
public static void Main()
var obj1 = new SomeClass<string>();
var obj2 = new SomeClass<string>();
IInterface inter1 = obj1;
IInterface inter2 = obj2;
Action action1 = obj1.Print;
Action action2 = obj1.Print;
Console.WriteLine("Obj1: " + obj1.GetHashCode());
Console.WriteLine("Obj2: " + obj2.GetHashCode());
Console.WriteLine("Inter1: " + inter1.GetHashCode());
Console.WriteLine("Inter2: " + inter2.GetHashCode());
Console.WriteLine("Action1: " + action1.GetHashCode());
Console.WriteLine("Action2: " + action2.GetHashCode());